使用karma和webpack进行单元测试:_karma_webpack_ - 没有这样的文件或目录

Sve*_*ven 6 karma-runner webpack karma-coverage

我正在尝试使用覆盖(使用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
Run Code Online (Sandbox Code Playgroud)

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

karma.conf.js
  - src/
      - js/
        - views/
            - Foo/
                - Foo.js
                - test/
                    - FooTest.js
Run Code Online (Sandbox Code Playgroud)

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,
  });
};
Run Code Online (Sandbox Code Playgroud)

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

正如您所看到的,我已经尝试使用webpack resolve选项,但它不起作用.由于错误消息指出ERROR [karma]我也有点担心这个错误可能会有所不同.

此外,我怀疑可能是斑点模式**/Foo.js已关闭,但尝试一些变化(如**/**/Foo.js)也没有帮助.

小智 9

我有同样的问题.事实证明,我需要离开karma_webpack文件夹,而不是

preprocessors: {
  '**/test/*Test.js': ['webpack'],
  '**/Foo.js': ['webpack', 'coverage'],
},
Run Code Online (Sandbox Code Playgroud)

尝试

preprocessors: {
  '../**/test/*Test.js': ['webpack'],
  '../**/Foo.js': ['webpack', 'coverage'],
},
Run Code Online (Sandbox Code Playgroud)