0

我想使用 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 目录......
任何想法?

4

1 回答 1

0

使用以前版本的 karma-coverage 包,我不再有问题了。我已经卸载了最新版本(0.5.0)并安装了 0.2.7。

于 2015-08-07T13:16:51.787 回答