web-dev-qa-db-ja.com

--detectOpenHandles --forceExitでjestを実行することの副作用はありますか?

テストにjestを使用していますが、いくつかのテストシナリオではjestメッセージが表示されます。

Jest did not exit one second after the test run has completed. Jestの推奨に従い、--detectOpenHandlesで実行すると、終了しないテストプロセスがハングしますが、--forceExitオプションを追加する他のオンラインの提案も確認しました。これでテストが終了し、すべて問題ありません。

--detectOpenHandles --forceExitオプションの有無にかかわらず、すべてのテストが適切に実行され、合格していることは言及に値します。

それはそのような場合のベストプラクティスと見なされているのでしょうか?それとも「応急処置」として私に役立つだけですか?そうすることの副作用は何ですか?

乾杯、

17
Ziv Levy

ドキュメントから、detectOpenHandlesオプションは次の目的で使用します。

開いているハンドルを収集して印刷し、Jestが正常に終了しないようにします。 Jestを終了して理由を追跡するために--forceExitを使用する必要がある場合は、これを使用します。これは、-runInBandを意味し、テストを順次実行します。 async_hooksを使用して実装されているため、Node 8以降でのみ機能します。このオプションは、パフォーマンスが大幅に低下するため、デバッグにのみ使用してください。

forceExitオプションはベストプラクティスとして使用しないでください。使用する必要があるのは、次の理由だけです。

  • 非同期機能が終了しませんでした
  • Promise関数が完了しませんでした
  • Websocket接続はまだ開いています
  • データベース接続はまだ開いています
  • 接続/切断メソッドを持つすべてのものは、テストの終了前に切断されませんでした
4
oktapodia