Jest: 测试完成运行后,Jest 应该 `process.exit(0|1)`

创建于 2017-03-03  ·  3评论  ·  资料来源: facebook/jest


您要请求功能还是报告错误
功能/错误

当前的行为是什么?
如果一个库行为不端并且不让进程退出,那么进程会无限期地挂起,尽管所有测试都通过了。 可以说,这些库甚至可能没有行为不端,因为有一些正当的理由不让流程自然结束。

如果当前行为是一个错误,请提供重现的步骤以及通过https://repl.it/languages/jest的 repl.it 演示或 GitHub 上的最小存储库,我们可以yarn installyarn test

预期的行为是什么?
当所有测试都完成后,Jest 退出该过程,Jest 不再需要测试。

请提供您的确切 Jest 配置并提及您的 Jest、节点、yarn/npm 版本和操作系统。
我认为这无关紧要,但在这里:

  • 笑话:v19.0.2
  • 节点:v7.7.1
  • npm:4.1.2
  • 纱线:0.21.3
  • 操作系统:Linux 4.10.1-gentoo #4 SMP PREEMPT Wed Mar 1 14:47:04 EST 2017 x86_64 Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz GenuineIntel GNU/Linux

最有用的评论

答案并没有解决问题...

所有3条评论

这就是--forceExit的用途,但它是一个逃生舱口。 如果 Jest 没有退出,则意味着您在测试后没有正确清理(使用afterAll )。

答案并没有解决问题...

@cpojer - 您能否解释一下为什么这被视为逃生舱口,而不是默认行为?

我的期望是调用 Jest 的唯一目的是运行测试。 一旦所有测试块都以一种或另一种方式解决,并且每个after*块都已处理,那么假设比 Jest 存活的进程应该继续运行的原因是什么?

IMO,这些应该默认被杀死。 如果需要,我们有 after* 进行整洁的清理/关闭,但我敢打赌,大多数情况下,硬退出不会出现任何问题。

此页面是否有帮助?
0 / 5 - 0 等级