angularjs - 使用 jasmine 对 karma 运行超过 10 次测试导致 : "ERROR: Some of your tests did a full page reload!"

标签 angularjs unit-testing jasmine karma-runner karma-jasmine

所以,这是我使用 Karma 和 Jasmine 对我的 angularJS 代码进行单元测试的第一个项目。使用 Yeoman Angular 生成器进行设置。

当我达到 11 个测试时,我收到一条错误消息,提示“您的某些测试重新加载了整页”。我没有做任何会触发重新加载的测试。

深入挖掘,我看到 Github 上引用了相同的问题。
https://github.com/jasmine/jasmine/issues/366 --(FuzzySockets 评论)

问题似乎源于 jasmine-core 中的一行代码
https://github.com/jasmine/jasmine/blob/master/lib/jasmine-core/jasmine.js

为了避免堆栈溢出,maximumSpecCallbackDepth设置为 20。并且每次 currentSpecCallbackDepth超过这个范围,使用 setTimout 在新堆栈上执行进一步的测试。功能。

这条线似乎会导致问题并使 karma 抛出错误。 (我已经通过在我自己的单元测试中调用 setTimeout 方法来验证这一点,并且它抛出了相同的错误)。

如果更改 maximumSpecCallbackDepth到 100,我的测试运行良好,最后没有抛出错误

有没有人看到这个问题并知道修复?我正在使用最新版本的 karma(0.13.15) 和 jasmine(2.4.1)。

我并没有对 yeoman 生成的默认 grunt 或 karma 配置弄得太多,除了我使用的是 chrome 启动器而不是默认的 phantomJS,所以我不明白其他人是如何面对的同样的问题在这里。

最佳答案

+1 这个问题。正如你所说,它是由 maximumSpecCallbackDepth 限制引起的,但到目前为止我没有找到解决这个问题的方法。您可能可以在这里跟踪问题 https://github.com/karma-runner/karma/issues/1101 .

一种临时解决方案是减少项目中嵌套的“描述”块。

关于angularjs - 使用 jasmine 对 karma 运行超过 10 次测试导致 : "ERROR: Some of your tests did a full page reload!",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229737/

相关文章:

javascript - 从 ERB 切换到 Angular 时,Rails 应用程序中的 AngularJS View 功能测试中断

angularjs - 如何隐藏 Angularjs 源代码?

javascript - 使用 if 来检测使用 jQuery 的类

rest - 是否可以更改 AngularJS $resource 对象的 header 配置?

java - 如何使用 JUnit 或 Mockito 测试使用 Random() 的方法(不带参数和返回值)

python - 如何将字符串解释为字节?

unit-testing - 测试函数 : what more should be tested?

javascript - 在没有代码库的情况下测试 JavaScript

selenium-webdriver - Protractor :如果我提前关闭浏览器,我可以继续执行测试吗?

ajax - 为什么在调用方法 jasmine.Ajax.install() 时会出现此错误?