当mocha测试需要一段时间才能完成时,点击CTRL退出mocha命令,但不退出测试运行程序"_mocha",测试就会继续。有人知道这是故意的吗?
/*
* test/mocha-kill-test.js
*/
describe("Mocha Timeout Test", function() {
this.timeout(10e3);
it("should exit when hitting CTRL-C", function(done) {
var count = 0;
var timer = setInterval(function() {
if (count++ < 10) {
console.log(" WAIT " + count);
} else {
console.log(" DONE");
clearInterval(timer);
done();
}
}, 1e3);
});
});此测试将运行10秒,然后退出。如果尝试用CTRL从终端中断它(或以其他方式向它发送SIGINT),测试运行程序将继续运行,您将在shell中看到类似的情况。
shell> mocha test/mocha-kill-test.js
WAIT 1
WAIT 2
^Cshell> WAIT 3
WAIT 4
WAIT 5
WAIT 6
WAIT 7
WAIT 8
WAIT 9
WAIT 10
DONE
․
1 passing (11s)我看到mocha应该捕获SIGINT并执行一个runner.abort(),但这不可能是预期的行为,对吗?
节点 v0.10.26 mocha 1.18.2
发布于 2015-03-26 02:56:55
引用Mocha的支持者关于这个问题的反馈:“您需要确保Mocha代码在某个时候停止运行。”
有关详细信息,请参阅下面的链接:
https://github.com/mochajs/mocha/issues/1362
根据其他开发人员的说法,下面的代码即使在试图用CTRL+C杀死Mocha进程之后,也会使Mocha进程保持活动:
echo "while(1);" > file.js
mocha -w file.js 发布于 2015-03-26 10:43:10
我不知道它们是什么时候修复的,但是在Mocha 2.1.0和2.2.1中,如果我在执行示例文件的过程中点击了Ctrl,我就会得到您想要的行为:立即停止。
https://stackoverflow.com/questions/22977350
复制相似问题