是否可以在js中进行单元测试超时?

时间:2015-01-30 16:41:33

标签: javascript node.js unit-testing timeout

如果超过1秒,我希望每个测试都以错误终止。

我正在使用Facebook的Jest库,在JSX中编写测试并从Gulp运行它们(这意味着它们在node.js上运行)。

2 个答案:

答案 0 :(得分:0)

当然,但这显然取决于您的测试框架。我使用的是mocha,它支持suitetest-specific超时。

答案 1 :(得分:0)

理论上,是的。这很简单:

setTimeout(function() {
  // Print tests that haven't run and clear queue
}, /* timeout here */);

但是事件循环可能会被饿死。例如:

(function foreverRun() {
  process.nextTick(foreverRun);
}());

为了解决上述问题,您需要在处理nextTickQueue期间破解Node的内部强制短暂中断,以检查测试状态。

对于严格的Node解决方案,更有把握的方法是在子进程中运行测试脚本并在超时后终止它。