使用带Webpack的Karma

时间:2016-11-08 13:13:39

标签: karma-runner

我使用Webpack进行了Karma设置。每当我修改测试文件或其任何依赖项时,都会运行所有测试。这一切都很好,但我真的很喜欢只运行最少数量的测试。如果我更改了测试文件,它应该只运行该测试文件。如果我更改源文件,它应该运行任何测试文件将该源文件作为依赖项(通过require)。

这是我karma.config.js的相关部分:

files: [
  {
    pattern: '**/*.test.js',
    watched: true,
    included: true,
    served: true
  },
],

preprocessors: {
  '**/*.test.js': ['webpack']
},

webpack: {
  resolve: {
    root: path.join(__dirname, '..', 'webpack'),
    extensions: ['', '.js', '.jsx'],
  },

  module: {
    loaders: [
      {
        test: /.jsx?$/,
        loader: 'babel-loader',
        exclude: [/node_modules/],
        query: {
          presets: ['es2015', 'react']
        }
      },
    ]
  },
},

完整的karma.config.js文件为in a gist

我熟悉other questions中提及的涉及process.env.npm_config_single_file的解决方案,但这不是我想要做的事情。

根据我上面的配置,我希望它将每个文件作为一个单独的webpack来处理,这也是文档所暗示的 在webpack/karma-webpack的顶部。相反,我似乎得到的是一个包含两个块的单个webpack,每个日志:

                      Asset     Size  Chunks             Chunk Names
employee_list_entry.test.js  1.07 MB       0  [emitted]  employee_list_entry.test.js
employer_list_entry.test.js  1.07 MB       1  [emitted]  employer_list_entry.test.js
chunk    {0} employee_list_entry.test.js (employee_list_entry.test.js) 1.01 MB

即使只保存一个测试文件,它也会重建两个块。

1 个答案:

答案 0 :(得分:0)

您可能希望应用Webpack的监视模式,而不是使用似乎仅限于执行所有文件的Karma监视模式:

https://webpack.js.org/configuration/watch/

另见Gulp和Grunt的以下相关问题:

Karma run single test

Getting grunt karma to run one unit test