Je commence à peine à travailler sur une application de noeud utilisant la plaisanterie à des fins de test. express-generator
utilisé pour les échafaudages.
Lors du premier test, le message d'erreur suivant s'affiche:
Jest a détecté les 3 poignées ouvertes suivantes empêchant potentiellement Jest de quitter
Étapes à suivre pour reproduire:
git clone [email protected]:gandra/node-jest-err-demo.git
cd node-jest-err-demo
npm install
cp .env.example .env
npm run test
npx envinfo --preset jest
sortie:
npx: installed 1 in 1.896s
System:
OS: macOS High Sierra 10.13.4
CPU: x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz Binaries:
Node: 9.3.0 - /usr/local/bin/node
Yarn: 1.5.1 - /usr/local/bin/yarn
npm: 5.7.1 - /usr/local/bin/npm npmPackages:
jest: ^23.1.0 => 23.1.0
Toute idée de comment résoudre ce problème?
Voici un problème connexe sur github: https://github.com/facebook/jest/issues/6446
L'option detectOpenHandles
est utilisée pour détecter les descripteurs ouverts. Elle devrait normalement être utilisée. L'erreur met en garde sur potentiellement poignées ouvertes:
Jest a détecté les 4 poignées ouvertes suivantes empêchant potentiellement Jest de quitter
Même si les poignées seront fermées, l'erreur apparaîtra quand même.
Le problème avec cette application est que la connexion à la base de données n'est pas vraiment fermée:
if (process.env.NODE_ENV === 'test') {
mongoose.connection.close(function () {
console.log('Mongoose connection disconnected');
});
}
Pour une raison quelconque, NODE_ENV
est dev
, malgré le fait que la documentation indique qu'il est censé être test
.
La fermeture immédiate de la connexion à la base de données au démarrage de l’application peut entraîner des problèmes dans les unités qui utilisent réellement la connexion à la base de données. Comme expliqué dans le guide, la connexion MongoDB doit être à la fin du test. Puisque la connexion par défaut Mongoose est utilisée, il peut s'agir de:
afterAll(() => mongoose.disconnect());