7

我正在尝试使用覆盖率(使用karma-coverage)和 webpack (使用karma-webpack)运行单元测试。测试按预期运行,但要生成覆盖率报告,需要加载实际源文件(不是测试)并通过coveragewebpack处理器。

不幸的是,这失败并出现以下错误:

ERROR [karma]: { [Error: no such file or directory]
  code: 'ENOENT',
  errno: 34,
  message: 'no such file or directory',
  path: '/_karma_webpack_/views/Foo/Foo.js' }
Error: no such file or directory

Foo.js是包含源的文件。目录结构是这样的:

karma.conf.js
  - src/
      - js/
        - views/
            - Foo/
                - Foo.js
                - test/
                    - FooTest.js

karma.conf.js

module.exports = function (config) {
  config.set({
    basePath: 'src/js/',

    frameworks: ['jasmine'],

    files: [
      '**/test/*Test.js',
      '**/Foo.js',
    ],

    exclude: [],

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

    coverageReporter: {
      type: 'html',
      dir: 'coverage',
    },

    webpack: {
      resolve: {
        alias: [
          { _karma_webpack_: 'src/js' },
        ],
      },

    },

    reporters: ['progress', 'coverage'],

    port: 9876,

    colors: true,

    logLevel: config.LOG_DEBUG,

    autoWatch: true,

    browsers: ['Chrome'],

    singleRun: false,

    concurrency: Infinity,
  });
};

问题很明显:路径/_karma_webpack_/views/Foo/Foo.js确实不存在。我想这是一些内部路径,但我该如何改变呢?

如您所见,我已经尝试为此使用 webpack 解析选项,但它不起作用。由于错误消息指出ERROR [karma]我也有点担心这个错误可能会有所不同。

此外,我怀疑可能通配模式**/Foo.js已关闭,但在那里尝试一些更改(如**/**/Foo.js)也无济于事。

4

1 回答 1

9

我有同样的问题。原来,我需要离开 karma_webpack 文件夹,所以不是

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

尝试

preprocessors: {
  '../**/test/*Test.js': ['webpack'],
  '../**/Foo.js': ['webpack', 'coverage'],
},
于 2016-04-04T20:09:29.083 回答