我有一个死的简单项目(为了摇动问这个问题)。我使用browserify捆绑我的项目,karma / jasmine作为测试框架,以及browserify-instanbul用于代码覆盖:
问题是当我运行npm test
时,所有测试都通过,终端为绿色。但是当我查看报道时,那里没有什么有价值的东西:
我可以看到单元测试测试机制正常工作。我试图使1次测试失败并且确实显示测试失败,但测试覆盖率仍与上图相同。
以下是我所拥有的:
src文件夹下的文件:
animal.js
animal.spec.js
dog.js
dog.spec.js
每个源文件的内容可以简单如下:
animal.js:
function openMouth(){
return 'openMouth';
}
module.exports = {
openMouth: openMouth
};
dog.js:
var animal = require("./animal.js");
function say() {
animal.openMouth();
return 'woof';
}
module.exports = {
say: say
};
specs文件只验证每个函数的输出。所以像这样:
dog.spec.js:
var dog = require("./dog.js");
describe('dog', function () {
it('should be able to say woof', function () {
expect(dog.say()).toBe('woof');
});
});
我的karma.conf.js
module.exports = function(config) {
config.set({
basePath: '.',
autoWatch: true,
frameworks: ['jasmine', 'browserify'],
files: [
'src/**/*.js'
],
browsers: ['Chrome'],
reporters: ['progress', 'coverage'],
preprocessors: {
'src/**/*.spec.js': ['browserify'],
'src/**/!(*.spec).js': ['browserify']
},
singleRun: true,
plugins: [
'karma-coverage',
'karma-browserify',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine'
],
transform: [
['browserify-istanbul',
{
instrumenterConfig: {
embedSource: true // this is important for HTML reports
}
}
]
]
});
};
答案 0 :(得分:0)
我通过更新我的业力配置修复了这个问题:
//jshint strict: false
module.exports = function(config) {
config.set({
basePath: '.',
autoWatch: true,
frameworks: ['jasmine', 'browserify'],
files: [
'node_modules/moment/moment.js',
'src/*.js'
],
browsers: ['Chrome'],
reporters: ['progress', 'coverage'],
preprocessors: {
'src/*.js': ['browserify']
},
browserify: {
//debug: true,
transform: ['browserify-istanbul']
},
coverageReporter: {
reporters : [
{"type": "text"},
{"type": "html", dir: 'coverages'}
]
},
singleRun: true,
plugins: [
'karma-coverage',
'karma-browserify',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine'
]
});
};
请务必同时安装instanbul
。