我正在使用业力,webpack,和茉莉来测试我的ES6代码,与伊斯坦布尔和伊斯巴达的代码覆盖。我的测试似乎都通过了,但是覆盖率确实很低,因为我不得不导入jquery和jquery-resizable-dom,它们作为未经测试的代码包含在覆盖率中。
我有很多普通的js代码(大约200行),但随后添加了如下内容:
import $ from 'jquery';
require('imports?jQuery=jquery!jquery-resizable-dom');
const makeImagesResizable = () => {
$('.img').resizable({
handleSelector: '> .glyphicon-resize-full'
});
};
export { makeImagesResizable };在我的茉莉花测试中,我导入了makeImagesResizable来测试它。当我运行测试时,我得到了大约27%的代码覆盖率,因为它在覆盖率中包含了jquery代码。删除上面的整个代码块( jquery导入和所有使用jquery的代码)将覆盖率提高到94%,这更接近实际覆盖率(jquery代码非常短)。
是否有办法将第三方导入排除在代码覆盖范围之外,以反映我们从代码中实际获得的数字?
这也是我的业力配置:
const webpack = require('webpack');
const isparta = require('isparta');
module.exports = (config) => {
config.set({
frameworks: ['jasmine'],
files: [
'./spec/*.spec.js',
],
webpack: {
module: {
loaders: [
{ test: /\.js$/, loader: 'imports?define=>false!babel' },
],
},
},
webpackMiddleware: {
noInfo: true,
},
preprocessors: {
'./spec/*.spec.js': ['webpack', 'coverage'],
},
reporters: ['progress', 'coverage'],
coverageReporter: {
instrumenters: { isparta },
reporters: [
{
type: 'html',
dir: 'coverage',
},
],
},
browsers: ['Chrome'],
plugins: [
'karma-webpack',
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher',
],
});
};我只包含测试文件,因为由于某种原因,包含源文件根本不返回任何覆盖率。
发布于 2016-12-26 22:08:03
引用http://karma-runner.github.io/1.0/config/configuration-file.html的指南,您可以使用exclude选项来阻止他们影响您的结果。
https://stackoverflow.com/questions/41300226
复制相似问题