salut
4.12.0
J'ai ajouté un test Moka/Chai à mon application de travail (Express+mangoose) et j'ai remarqué quelque chose qui n'était pas visible lors de l'exécution de l'application.
Publier
Lors de l'exécution de mes tests unitaires, le processus ne se termine jamais et reste inactif à cause de la mangouste (apparemment).
Rien d'étonnant dans l'extrait de code ci-dessous... J'ai essayé quelques mongoose#disconnect à la toute fin de mon test mais ça ne change rien..
Pourriez-vous s'il vous plaît des conseils sur ce qui bloque la sortie du processus?
const mongoose = require('mongoose');
import { databaseConfig } from './config/database';
export function setupDatabase() {
mongoose.Promise = require('bluebird');
//mongoose.set("debug", true)
var connection = mongoose.connect(databaseConfig.database, { useMongoClient: true }, (err) => { console.log("Connect error: " + err) });
mongoose.connection.on('connected', () => {
console.log('Connected to database ' + databaseConfig.database);
});
mongoose.connection.on('error', (err) => {
console.log('Database error: ' + err);
});
return mongoose;
}
chaque fois que j'ai utilisé le mongoose.connect
, je reçois toujours ces avertissements
DeprecationWarning :
open()
est obsolète dans mongoose >= 4.11.0, utilisezopenUri()
la place, ou définissez l'optionuseMongoClient
si vous utilisezconnect()
oucreateConnection()
. Voir http://mongoosejs.com/docs/connections.html#use -mongo-client
im sur le noeud : 8.7 , mangouste : 4.12.2
essaye ça,
const mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
import { databaseConfig } from './config/database';
async function setupDatabase() {
// mongoose.set('debug', true);
return await mongoose.connection.openUri(databaseConfig.database);
}
(async function () {
const conn = await setupDatabase();
// closing instance
await conn.close();
}());
Eh bien, mon mauvais, ce n'était pas la faute de la mangue.
J'utilise moka et j'ai dû ajouter le paramètre --exit
pour forcer l'appel à process.exit.
Je suppose que sans ce paramètre moka juste... ne fait rien à la fin du test et attend.
Forcer la fermeture du processus n'est qu'une solution de contournement. Le problème est qu'il semble que si vous avez plusieurs connexions ouvertes et que vous utilisez mongoose.disconnect()
, cela laisse toujours un socket ouvert.
Commentaire le plus utile
Forcer la fermeture du processus n'est qu'une solution de contournement. Le problème est qu'il semble que si vous avez plusieurs connexions ouvertes et que vous utilisez
mongoose.disconnect()
, cela laisse toujours un socket ouvert.