我想使用 Karma 对我的 JQuery Mobile 项目进行代码覆盖,并使用 QUnit 或 Jasmine 进行测试。
我已经安装了我需要的所有节点包(karma、karma-cli、karma-coverage、jasmine/qunitjs、karma-chrome-launcher)并创建了以下 karma.conf 文件:
业力.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
})
}
和这个测试文件(与茉莉花):
缺席.test.js
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
我在我的项目上启动了业力启动,我的缺席.js 文件仅包含此功能:
function test() {
var foo = 'bar';
}
它工作正常,生成了我的覆盖率报告,并指出我的缺席.js 文件中覆盖了 50% 的代码。
但是,如果我使用“if”语句修改我的函数:
function test() {
if (1 == 1){
var foo = "bar";
}
}
我在控制台中有以下错误:
ERROR [preprocessor.coverage]: Object [object Object] has no method 'isIdentifierPart'
实际上,如果我使用任何条件语句或循环,我就会得到这个错误。我的业力配置有问题吗?
编辑
我重新安装了 Node.js 和所有的 karma 包,它终于可以工作了,但现在我有一个奇怪的问题:所有生成的 html 文件都放在我的源目录中,即使我指定了 coverageReporter 目录......
任何想法?