我们在使用幻像运行业力测试案例时遇到了一个问题,我们的幻像崩溃并断开连接。 这是由于内存泄漏或其他一些问题。如果有人有一些合适的解决方案,请告诉我。 我发现解决方法是将测试用例分解为多个grunt任务,但由于我们有大量超过1500的测试用例,因此这不是一个可行的任务。
我们使用以下版本
节点: - 0.10.32
业力: - 0.12.24
PhantomJs: - 1.9.8(karma-phantomJs-Launcher)
请尽快告诉我解决方案。
答案 0 :(得分:2)
我发现有两个原因可以发生这种情况。
通过将测试套件拆分为较小的问题,可以解决第一个问题。或者,您可以研究是否有可能告诉PhantomJS运行其JavaScript垃圾收集,但我没有走这条路,因此无法在那里提供更多细节。
第二个问题可以通过以下方式解决:
0.2.1
中修复)答案 1 :(得分:0)
我遇到了处理随机崩溃的同类问题。虽然我没有找到避免它们的方法,但有可能在崩溃时重新启动grunt任务。
grunt.registerTask('karma-with-retry', function (opt) {
var done = this.async();
var count = 0;
var retry = function () {
grunt.util.spawn({
cmd : "grunt",
args : ["connect", "karma"], // your tasks
opts: {
stdio: 'inherit'
}
}, function (error, result, code) {
count++;
if (error && code === 90 /* Replace with code thrown by karma */) {
if(count < 5) {
grunt.log.writeln("Retrying karma tests upon error: " + code );
retry();
} else {
done(false);
}
} else {
done(result);
}
});
}
retry();
});
来源https://github.com/ariya/phantomjs/issues/12325#issuecomment-56246505
答案 2 :(得分:0)
我在断言下面一行时让Phantom崩溃了
dom.should.be.instanceof(HTMLCollection);
使用chrome,但幻像崩溃没有任何有用的错误消息。
在PhantomJS_debug浏览器上运行相同的测试并且debug
选项设置为true后,我能够看到真正的错误消息。
显示以下错误消息。
The instanceof assertion needs a constructor but object was given.
而不是
PhantomJS has crashed. Please read the bug reporting guide at
<http://phantomjs.org/bug-reporting.html> and file a bug report.
因此断言可以使用chrome,但幻像2.1.1会因上述错误而崩溃。希望这会有所帮助。