使用--detectOpenHandles --forceExit运行开玩笑有副作用吗?

Ziv*_*evy 16 javascript tdd integration-testing jestjs

我正在jest用于测试,在一些测试场景中,我收到了jest消息:

Jest did not exit one second after the test run has completed. 在考虑Jest的建议--detectOpenHandles并且最终停止测试过程永无止境时,我看到其他在线建议也添加了该--forceExit选项.现在测试结束,一切正常.

值得一提的是,无论有没有--detectOpenHandles --forceExit选项,所有测试都正常运行并通过.

我想知道在这种情况下是否被视为最佳做法?还是只是把我当作"急救"?这样做有什么副作用?

干杯,

okt*_*dia 11

从文档中,该detectOpenHandles选项适用于:

尝试收集和打印阻止 Jest 干净退出的打开句柄。在您需要使用 --forceExit 以便 Jest 退出以可能追踪原因的情况下使用此选项。这意味着 --runInBand,使测试串行运行。使用 async_hooks 实现,因此它仅适用于 Node 8 及更新版本。此选项具有显着的性能损失,应仅用于调试。

forceExit选项不应该被用作最佳实践,您唯一需要使用的时候是因为:

  • 异步函数未完成
  • 一个promise函数没有完成
  • Websocket 连接仍处于打开状态
  • 数据库连接仍然打开
  • 具有连接/断开连接方法的所有东西在测试结束前都没有断开连接

  • 我从文档中了解到,使用“--forceExit”时,“--runInBand”是隐式的,因此指定与否应该没有什么区别,但也许有一些我误解的地方。 (4认同)