如何从业力代码覆盖率报告中排除文件?
How do I exclude files from karma code coverage report?
有没有办法从业力覆盖率运行器的代码覆盖率报告中排除文件https://github.com/karma-runner/karma-coverage?
您可以在这里使用多种技术:karma 使用 minimatch globs 作为文件路径,并且 use 可以利用它来排除一些路径。
作为第一个解决方案,我想尝试仅添加文件的路径以使用覆盖率进行预处理:
// 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/'
}
});
};
以上是karma-coverage中的默认示例,它表明只有src
文件夹中的那些文件会被预处理。
另一个技巧是使用 !
运算符来排除特定路径:
preprocessors: {
// source files, that you wanna generate coverage for
// do not include tests or libraries
'src/**/!(*spec|*mock).js': ['coverage']
},
上面的代码只对那些 Javascript 不以 spec.js
或 mock.js
结尾的文件进行覆盖 运行。文件夹也可以这样做:
preprocessors: {
// source files, that you wanna generate coverage for
// do not include tests or libraries
'src/**/!(spec|mock)/*.js': ['coverage']
},
不处理 spec
或 mock
文件夹中的任何 Javascript 文件。
如果您使用 karma-esm
或 @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;
};
有没有办法从业力覆盖率运行器的代码覆盖率报告中排除文件https://github.com/karma-runner/karma-coverage?
您可以在这里使用多种技术:karma 使用 minimatch globs 作为文件路径,并且 use 可以利用它来排除一些路径。
作为第一个解决方案,我想尝试仅添加文件的路径以使用覆盖率进行预处理:
// 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/'
}
});
};
以上是karma-coverage中的默认示例,它表明只有src
文件夹中的那些文件会被预处理。
另一个技巧是使用 !
运算符来排除特定路径:
preprocessors: {
// source files, that you wanna generate coverage for
// do not include tests or libraries
'src/**/!(*spec|*mock).js': ['coverage']
},
上面的代码只对那些 Javascript 不以 spec.js
或 mock.js
结尾的文件进行覆盖 运行。文件夹也可以这样做:
preprocessors: {
// source files, that you wanna generate coverage for
// do not include tests or libraries
'src/**/!(spec|mock)/*.js': ['coverage']
},
不处理 spec
或 mock
文件夹中的任何 Javascript 文件。
如果您使用 karma-esm
或 @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;
};