mercredi 7 septembre 2016

Can karma do electron app unit test?

I am a electron beginner. My electron version is 1.3.4 and platform is window 8.1. I am using karma to do electron unit test. But when I set environment it has many problem. Is it possible to do electron unit test?

I have an electron app with the following folder structure:

src/
 |_app.vue
 |_index.js
 |_components/
       |_SelectFolder.vue
test/
 |_unit/
     |_index.js
     |_karma.conf.js
     |_specs/
        |_test.specs.js

Now index.js calls SelectFolder. I want to use karma to test SelectFolder method.

My karma.conf.js is like below:

var path = require('path')
var merge = require('webpack-merge')
var baseConfig = require('../../build/webpack.base.conf')
var utils = require('../../build/utils')
var webpack = require('webpack')
var projectRoot = path.resolve(__dirname, '../../')
var webpackConfig = merge(baseConfig, {
  module: {
    loaders: utils.styleLoaders()
  },
  devtool: '#inline-source-map',
  vue: {
    loaders: {
      js: 'isparta'
    }
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../../config/test.env')
    })
  ],
   target:'atom',
   node: {
   fs: "empty"
  }
})
delete webpackConfig.entry

webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || []
webpackConfig.module.preLoaders.unshift({
  test: /\.js$/,
  loader: 'isparta',
  include: path.resolve(projectRoot, 'src')
})

// only apply babel for test files when using isparta
webpackConfig.module.loaders.some(function (loader, i) {
  if (loader.loader === 'babel') {
    loader.include = path.resolve(projectRoot, 'test/unit')
    return true
  }
})

module.exports = function (config) {
  config.set({
    browsers: ['Electron'],
    frameworks: ['mocha', 'sinon-chai'],
    reporters: ['spec', 'coverage'],
    files: ['./index.js'],
    preprocessors: {
      './index.js': ['electron']
    },
    client: {
      useIframe: false
    },
    webpack: webpackConfig,
    webpackMiddleware: {
      noInfo: true
    },
    coverageReporter: {
      dir: './coverage',
      reporters: [
        { type: 'lcov', subdir: '.' },
        { type: 'text-summary' }
      ]
    }
  })
}

It says Electron 1.3.4 (Node 6.3.0) ERROR Uncaught ReferenceError: require is not defined. How do i solve it? If karma can't do electron unit test. What package I can use?

Any ideas?

Aucun commentaire:

Enregistrer un commentaire