Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Karma单元测试在一个无限循环中反复运行_Angularjs_Karma Runner - Fatal编程技术网

Angularjs Karma单元测试在一个无限循环中反复运行

Angularjs Karma单元测试在一个无限循环中反复运行,angularjs,karma-runner,Angularjs,Karma Runner,自从我(在JHipster项目中)创建了一系列新的指令测试之后,我就面临着这个问题。karma单元测试由grunt任务执行。 我想清楚地强调,我的问题与我在GitHub上发现的这两个问题(以及其他一些我不允许发布的问题)不同: 不同之处在于,karma从未完成测试的执行,而是一直在循环中运行测试,就好像在配置的位置有无限多个测试一样。可以在命令行输出上清楚地看到: Firefox 45.0.0 (Windows 7 0.0.0): Executed 321 of 192 (skipped

自从我(在JHipster项目中)创建了一系列新的指令测试之后,我就面临着这个问题。karma单元测试由grunt任务执行。 我想清楚地强调,我的问题与我在GitHub上发现的这两个问题(以及其他一些我不允许发布的问题)不同:

不同之处在于,karma从未完成测试的执行,而是一直在循环中运行测试,就好像在配置的位置有无限多个测试一样。可以在命令行输出上清楚地看到:


Firefox 45.0.0 (Windows 7 0.0.0): Executed 321 of 192 (skipped 7) SUCCESS (0 secs / 1 min 3.757 secs)
Chrome 51.0.2704 (Windows 7 0.0.0): Executed 399 of 192 (skipped 11) SUCCESS (0 secs / 1 min 2.239 secs)
PhantomJS 2.1.1 (Windows 7 0.0.0): Executed 444 of 192 (skipped 11) SUCCESS (0 secs / 1 min 0.515 secs)
它将永远持续下去。经过近一个小时的执行,结果如下:


Chrome 51.0.2704 (Windows 7 0.0.0): Executed 20171 of 192 (skipped 472) SUCCESS (0 secs / 50 mins 7.281 secs)
Firefox 45.0.0 (Windows 7 0.0.0): Executed 3186 of 192 (skipped 72) DISCONNECTED (14 mins 48.503 secs / 12 mins 16.547 secs)
PhantomJS 2.1.1 (Windows 7 0.0.0): Executed 27054 of 192 (skipped 611) DISCONNECTED (48 mins 25.253 secs / 47 mins 34.776 secs)
不管测试通过还是失败,也不管测试失败的原因(
TypeError,ReferenceError…
),测试都会永远运行(如您所见,所有测试都在这里通过)。只有在命令行中停止grunt任务时,执行才会停止

业力配置和咕噜任务在过去几个月没有改变。Singlerun和autowatch设置(以及任何其他设置)是不相关的

测试中的代码似乎无关紧要。一些改变使问题暂时消失了,但当我编写新的测试时,它总是会回来。当然,一开始我认为我的代码是罪魁祸首,但下面将说明为什么这不是一个合乎逻辑的结论

奇怪的行为总是在创建新测试时开始,但测试代码本身似乎无关紧要,因为新测试从不使用任何特殊操作或覆盖其他测试不使用的组件。此外,即使新测试是一个完全空的函数体,它仍然会导致奇怪的行为,这表明当测试覆盖时,不是程序中的新决策路径导致问题。这就是为什么我不认为代码是罪魁祸首。 我还通过关闭随机测试(我们很久以前就使用了随机测试,没有任何问题)来阻止无限执行,但当我添加新测试时,问题总是再次出现

环境无关紧要。测试在我的Windows机器上无限运行,在Linux服务器上的CI中无限运行

我还认为这可能是一个内存限制问题,因为有一段时间,浏览器在某个与新功能或新测试无关的测试中崩溃(并且已经正常工作了几个月)。当我关闭那个测试时,这个问题停止了一段时间,但后来又回来了(因为我一直在写测试)

我将所有NPM包和Bower组件更新为最新版本,但这并没有改变无限循环


到现在为止,我完全没有主意了。有人遇到过这种奇怪的行为和控制台输出吗?

我们刚刚解决了这个问题。问题是我们的应用程序中有一个注销功能,它在将浏览器重定向到另一个页面之前执行各种任务。我们在注销函数周围添加的一个测试没有模拟window.redirect调用,当从karma测试运行执行该调用时,它导致了循环行为

模拟/监视此呼叫后,循环行为停止


不确定这是否与您遇到的问题相同,但希望这些信息能帮助您

今天,同样的事情开始发生在我们身上——我想知道是不是业力/茉莉花/其他依赖性的释放导致了这一切?一定是巧合,我们在同一时间遇到了同样的问题!请看下面我的答案,了解我们是如何解决这个问题的。FWIW,我在Angular 6中也遇到过同样的问题。错误的测试是打开了一个对话框。到目前为止,我们只是摆脱了这个测试,但它并没有解释无限循环的根本原因…谢谢,这完全有帮助。有一系列代码测试可以让浏览器下载资源:
$window.location=“…”
。监听这些电话解决了问题。唯一一直困扰我的是,我成功地停止了几次循环,但当我编写新的测试时,它又回来了。您认为重定向是否会导致内存泄漏或类似情况,导致每次测试时内存消耗异常?如果是这样,我相信模仿重定向可以永久解决问题。否则,我担心循环会再次出现。我认为这种行为是因为重定向需要一些时间来处理,因此在重定向之后添加的执行测试越多,您给予重定向到进程的时间就越多,然后循环开始。理论上,如果重定向发生在karma运行中执行的最后一个测试上,那么您将不会看到循环,因为karma运行将在重定向发生之前终止。谢谢!我很喜欢:)这帮了我很大的忙,因为我遇到了同样的问题。导致所有测试连续重新运行的另一个原因是在我的一个组件中调用了“window.location.reload();”。