所以,这是我使用 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/