Node.js mocha进程(_mocha)在CTRL-C时不退出

时间:2014-04-10 02:01:46

标签: node.js mocha

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

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,我会得到您正在寻找的行为:一切都马上就停了。