web-dev-qa-db-fra.com

y a-t-il des effets secondaires de l'exécution de plaisanterie avec --detectOpenHandles --forceExit?

J'utilise jest pour les tests, et dans quelques scénarios de test, j'obtiens le message jest:

Jest did not exit one second after the test run has completed. Tout en prenant la recommandation de Jest de courir avec --detectOpenHandles et se retrouvant avec un processus de test suspendu qui ne se termine jamais, j'ai vu d'autres suggestions en ligne pour ajouter le --forceExit option également. Maintenant, le test se termine et tout va bien.

Il convient de mentionner que tous les tests fonctionnent correctement et passent, avec ou sans le --detectOpenHandles --forceExit options.

Je me demande si cela est considéré comme la meilleure pratique dans de tels cas? ou me sert-il simplement de "premiers soins"? Quels en sont les effets secondaires?

À votre santé,

17
Ziv Levy

De la documentation, l'option detectOpenHandles est pour:

Essayez de collecter et d'imprimer les poignées ouvertes empêchant Jest de sortir proprement. Utilisez-le dans les cas où vous devez utiliser --forceExit pour que Jest quitte pour potentiellement retrouver la raison. Cela implique --runInBand, ce qui rend l'exécution des tests en série. Implémenté à l'aide de async_hooks, il ne fonctionne donc que dans Node 8 et plus récent. Cette option présente une baisse significative des performances et ne doit être utilisée que pour le débogage.

L'option forceExit ne doit jamais être utilisée comme meilleure pratique, la seule fois que vous devez l'utiliser est parce que:

  • Une fonction asynchrone n'a pas terminé
  • Une fonction de promesse n'a pas fini
  • Une connexion Websocket est toujours ouverte
  • Une connexion à la base de données est toujours ouverte
  • Tout ce qui a une méthode de connexion/déconnexion ne s'est pas déconnecté avant la fin du test
4
oktapodia