NodeJS 在js中,单元测试可以有超时吗?

uqjltbpv  于 2023-06-05  发布在  Node.js
关注(0)|答案(3)|浏览(223)

我想每个测试终止一个错误,如果它需要超过1秒。
我使用Facebook的Jest库,在JSX中编写测试并从Gulp运行它们(这意味着它们运行在node.js上)。

piztneat

piztneat1#

当然,但这显然取决于您的测试框架。例如,我使用mocha,它支持套件和测试特定的超时。

jyztefdp

jyztefdp2#

理论上是的就这么简单

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

但是在这种情况下,事件循环可能会被饿死。例如:

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

要解决上述问题,您需要破解Node的内部机制,在nextTickQueue的处理过程中强制短暂中断,以检查测试状态。
对于严格的Node解决方案,更可靠的方法是在子进程中运行测试脚本,并在超时后杀死它。

moiiocjp

moiiocjp3#

是的,只是在jest设置配置

// jest.config.js
module.exports = {
    // ...
    testTimeout: 20000
}

相关问题