在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版本?
答案 0 :(得分:0)
我设法通过找出__cov_
与引发错误的测试文件相关的哈希码来解决此问题。我不知道为什么错误不会像通常那样出现,这将是另一个要解决的问题。
现在,我设法通过登录instrumenter.js
包中的instanbul
来找出文件。然后,通过删除覆盖工具,我找出了问题的根源。简单地删除coverage工具会给我一个不同的错误,但不会告诉我哪个文件,因此我需要同时执行这两个操作。