【发布时间】:2016-03-17 17:34:27
【问题描述】:
所以,这是我使用 Karma 和 Jasmine 对我的 angularJS 代码进行单元测试的第一个项目。使用 Yeoman 角度发生器进行设置。
当我达到 11 个测试时,我收到一条错误消息,提示“您的某些测试完成了整页重新加载”。我没有做任何会触发重新加载的测试。
深入挖掘,我看到 Github 上引用了相同的问题。 https://github.com/jasmine/jasmine/issues/366 -- (FuzzySockets cmets)
问题似乎源于 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,所以我不明白其他人是怎么做的在这里没有遇到同样的问题。
【问题讨论】:
-
我所有的测试都被执行了
标签: angularjs unit-testing jasmine karma-runner karma-jasmine