我想每个测试终止一个错误,如果它需要超过1秒。我使用Facebook的Jest库,在JSX中编写测试并从Gulp运行它们(这意味着它们运行在node.js上)。
piztneat1#
当然,但这显然取决于您的测试框架。例如,我使用mocha,它支持套件和测试特定的超时。
jyztefdp2#
理论上是的就这么简单
setTimeout(function() { // Print tests that haven't run and clear queue }, /* timeout here */);
但是在这种情况下,事件循环可能会被饿死。例如:
(function foreverRun() { process.nextTick(foreverRun); }());
要解决上述问题,您需要破解Node的内部机制,在nextTickQueue的处理过程中强制短暂中断,以检查测试状态。对于严格的Node解决方案,更可靠的方法是在子进程中运行测试脚本,并在超时后杀死它。
nextTickQueue
moiiocjp3#
是的,只是在jest设置配置
// jest.config.js module.exports = { // ... testTimeout: 20000 }
3条答案
按热度按时间piztneat1#
当然,但这显然取决于您的测试框架。例如,我使用mocha,它支持套件和测试特定的超时。
jyztefdp2#
理论上是的就这么简单
但是在这种情况下,事件循环可能会被饿死。例如:
要解决上述问题,您需要破解Node的内部机制,在
nextTickQueue
的处理过程中强制短暂中断,以检查测试状态。对于严格的Node解决方案,更可靠的方法是在子进程中运行测试脚本,并在超时后杀死它。
moiiocjp3#
是的,只是在jest设置配置