Mongoose: Le processus de test unitaire ne se termine pas à cause de mangoose ?

Créé le 16 oct. 2017  ·  3Commentaires  ·  Source: Automattic/mongoose

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;
}

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.

Tous les 3 commentaires

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, utilisez openUri() la place, ou définissez l'option useMongoClient si vous utilisez connect() ou createConnection() . 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.

Cette page vous a été utile?
0 / 5 - 0 notes