使用jasmine对karma运行超过10次测试会导致:"错误:您的某些测试会重新加载整页!"

Ron*_*ria 5 unit-testing jasmine angularjs karma-runner karma-jasmine

所以,这是我的第一个项目,我正在使用Karma和Jasmine对我的angularJS代码进行单元测试.使用Yeoman角度发生器进行设置.

一旦我进行了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函数在新堆栈上执行进一步的测试.

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

如果将更maximumSpecCallbackDepth改为100,我的测试运行正常,最后不会抛出任何错误

有没有人看过这个问题并知道修复?我正在使用最新版本的业力(0.13.15)和茉莉(2.4.1).

我没有真正搞乱使用自动生成的默认grunt或karma配置,除了我使用chrome启动器而不是默认的phantomJS,所以我不明白其他人是如何面对的同样的问题在这里.

小智 1

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

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