Mar*_*coL 45

你可以在这里使用几种技术:karma使用minimatch globs作为文件路径,使用可以利用它来排除某些路径.

作为第一个解决方案,我想尝试仅添加文件的路径以使用coverage进行预处理:

// karma.conf.js
module.exports = function(config) {
  config.set({
    files: [
      'src/**/*.js',
      'test/**/*.js'
    ],

    // coverage reporter generates the coverage
    reporters: ['progress', 'coverage'],

    preprocessors: {
      // source files, that you wanna generate coverage for
      // do not include tests or libraries
      // (these files will be instrumented by Istanbul)
      'src/**/*.js': ['coverage']
    },

    // optionally, configure the reporter
    coverageReporter: {
      type : 'html',
      dir : 'coverage/'
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

上面的一个是karma-coverage中的默认示例,它显示只有文件src夹中的那些文件才会被预处理.

另一个技巧是使用!运算符排除特定路径:

preprocessors: {
  // source files, that you wanna generate coverage for
  // do not include tests or libraries
  'src/**/!(*spec|*mock).js': ['coverage']
},
Run Code Online (Sandbox Code Playgroud)

上面的那个使覆盖仅在那些不以spec.js或以mock.js.结尾的Javascript文件上运行.文件夹也可以这样做:

preprocessors: {
  // source files, that you wanna generate coverage for
  // do not include tests or libraries
  'src/**/!(spec|mock)/*.js': ['coverage']
},
Run Code Online (Sandbox Code Playgroud)

不要处理specmock文件夹中的任何Javascript文件.

  • 提示:这将排除所有规范和模拟文件夹,如果它们在src/spec和src/mock文件夹中,则使用如下:`'src /!(spec | mock)/**/*.js':[ '覆盖']` (5认同)

Ben*_*ers 5

如果您正在使用karma-esmor @open-wc/testing-karma,它使用karma-esm,则将一个 glob 字符串数组传递给esm.coverageExclude

const { createDefaultConfig } = require('@open-wc/testing-karma');

const merge = require('deepmerge');

/**
 * @param  {import('@types/karma').Config} config
 * @return  {import('@types/karma').Config}
 */
module.exports = config => {
  config.set(merge(createDefaultConfig(config), {
    files: [{ pattern: config.grep ? config.grep : 'src/**/*.test.js', type: 'module' }],
    esm: {
      nodeResolve: true,
      babel: true,
      coverageExclude: ['src/*.test.js'],
    },
  }));
  return config;
};
Run Code Online (Sandbox Code Playgroud)