我想在我的JQuery Mobile项目和QUnit或Jasmine上使用Karma进行代码覆盖测试 我已经安装了我需要的所有节点包(karma,karma-cli,karma-coverage,jasmine / qunitjs,karma-chrome-launcher)并创建了以下karma.conf文件:
karma.conf.js
// Karma configuration
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'absence.js',
'absence.test.js'
],
exclude: [
],
preprocessors: {
'absence.js': ['coverage']
},
reporters: ['progress', 'coverage'],
coverageReporter: {
type : 'html',
dir: 'coverage/'
},
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
})
}
和这个测试文件(使用Jasmine):
absence.test.js
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
我在项目上启动业力开始,我的absence.js文件只包含此功能:
function test() {
var foo = 'bar';
}
并且它工作正常,我的覆盖率报告生成并指示我的absence.js文件中涵盖的代码的50%。
但如果我使用“if”语句修改我的函数:
function test() {
if (1 == 1){
var foo = "bar";
}
}
我在控制台中出现以下错误:
ERROR [preprocessor.coverage]: Object [object Object] has no method 'isIdentifierPart'
实际上,如果我使用任何conditionnal语句或循环,我会收到此错误。 我的业力配置有问题吗?
我重新安装了Node.js和所有业力包,它终于有效但现在我有一个奇怪的问题:所有生成的html文件都放在我的源目录中,如果我指定了一个coverageReporter目录,则为evn ...
有什么想法吗?
答案 0 :(得分:0)
使用以前版本的karma-coverage软件包,我不再有问题了。我已经卸载了最新版本(0.5.0)并安装了0.2.7。