Karma Istanbul修复程序可与新版本的Chrome一起使用

时间:2019-02-21 09:54:24

标签: angularjs jasmine istanbul karma-coverage

在AngularJs应用程序中,我使用Jasmine和Karma进行单元测试。

最近,在chrome更新之后(现在是72.0.3626.81),我的单元测试在本地开始失败(没有更改代码)。我认为该错误是我的报道工具Instanbul造成的。

有时错误显示如下:

所有未捕获的ReferenceError之后引发错误:未定义__cov_iuQO6FdumXRPLjSMopb0JQ引发

有时它会出现在特定的单元测试中(不确定原因)。

我搜索了我的应用程序,此__cov_变量可能来自的唯一文件是Instanbul包中generateTrackerVar()内的函数instrumenter.js的返回。

由于未进行代码更改,因此我认为问题出在新版本的Chrome,也许是安全设置。

我的问题是,karama-coverage / istanbul需要什么权限?或者,如果有人怀疑问题不是基于安全性的,那么可能是什么原因导致此错误?

谢谢

编辑: 我试图像这样禁用gulpfile中的网络安全性:

browsers: [ 'Chrome_without_security' ],
customLaunchers: {
    Chrome_without_security: {
        base: 'Chrome',
        flags: ['--disable-web-security']
    }
},

但这并不能解决问题。有没有办法在此配置中设置Chrome版本?

1 个答案:

答案 0 :(得分:0)

我设法通过找出__cov_与引发错误的测试文件相关的哈希码来解决此问题。我不知道为什么错误不会像通常那样出现,这将是另一个要解决的问题。

现在,我设法通过登录instrumenter.js包中的instanbul来找出文件。然后,通过删除覆盖工具,我找出了问题的根源。简单地删除coverage工具会给我一个不同的错误,但不会告诉我哪个文件,因此我需要同时执行这两个操作。