使用 Karma 和 Webpack 仅运行单个更改的测试文件

Jim*_*art 5 karma-runner

我有一个可用的 Karma 设置,使用 Webpack。每当我修改测试文件或其任何依赖项时,所有测试都会运行。这一切都很好,但我真的很喜欢它只运行最少数量的测试。如果我更改测试文件,它应该只运行该测试文件。如果我更改源文件,它应该运行任何具有该源文件作为依赖项的测试文件(通过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']
        }
      },
    ]
  },
},
Run Code Online (Sandbox Code Playgroud)

完整的karma.config.js文件在 gist 中

我熟悉其他问题中提到的解决方案,包括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
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*fan 0

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

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

另请参阅 Gulp 和 Grunt 的以下相关问题:

Karma 运行单一测试

让 grunt karma 运行一个单元测试