当mocha
测试需要一段时间才能完成时,按CTRL-C会退出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-C(或以其他方式发送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
答案 0 :(得分:1)
引用摩卡的支持者对此问题的反馈: “你需要确保Mocha正在运行的代码实际上在某些时候停止。”
请参阅以下链接了解更多详情:
https://github.com/mochajs/mocha/issues/1362
根据其他开发人员的说法,下面的代码即使在尝试用CTRL + C杀死它之后也会保持Mocha进程活着:
echo "while(1);" > file.js
mocha -w file.js
答案 1 :(得分:0)
我不知道他们何时修复它,但在Mocha 2.1.0和2.2.1中,如果我在执行您的示例文件时按下Ctrl-C,我会得到您正在寻找的行为:一切都马上就停了。