业力覆盖:对象没有方法 isIdentifierPart

Posted

技术标签:

【中文标题】业力覆盖:对象没有方法 isIdentifierPart【英文标题】:Karma-coverage : Object has no method isIdentifierPart 【发布时间】:2015-10-29 07:14:15 【问题描述】:

我想使用 Karma 对我的 JQuery Mobile 项目进行代码覆盖,并使用 QUnit 或 Jasmine 进行测试。 我已经安装了我需要的所有节点包(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);
  );
);

我在我的项目上启动业力启动,我的缺席.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 目录... 有什么想法吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于业力覆盖:对象没有方法 isIdentifierPart的主要内容,如果未能解决你的问题,请参考以下文章

业力覆盖率报告显示代码已覆盖(显然未覆盖)

在 Typescript 项目上运行业力覆盖时出现意外令牌

有没有办法从业力覆盖文本报告器结果中排除所有 100% 或阈值的文件?

如何从业力代码覆盖率报告中排除文件?

singleRun = true 时未创建业力覆盖文件

如何使用 Aurelia 和 typescript 获得业力覆盖?