Mongoose: Der Unit-Testprozess wird wegen Mangoose nicht beendet?

Erstellt am 16. Okt. 2017  ·  3Kommentare  ·  Quelle: Automattic/mongoose

Hallo
4.12.0

Ich habe meiner funktionierenden App (Express + Mangoose) einen Mocha/Chai-Test hinzugefügt und etwas bemerkt, das beim Ausführen der App nicht sichtbar war.

Problem
Wenn ich meine Komponententests ausführe, wird der Prozess nie beendet und bleibt wegen Mangoose (anscheinend) im Leerlauf hängen.

Nichts Erstaunliches im Code-Snippet unten ... Ich habe am Ende meines Tests etwas Mongoose #disconnect ausprobiert, aber es ändert sich nichts ...

Könnten Sie bitte einen Rat geben, was den Prozessausgang blockiert?

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

Hilfreichster Kommentar

Das Beenden des Prozesses zu erzwingen ist nur eine Problemumgehung. Das Problem ist, dass es so aussieht, als ob, wenn Sie mehrere Verbindungen geöffnet haben und mongoose.disconnect() verwenden, immer noch ein Socket offen bleibt.

Alle 3 Kommentare

Jedes Mal, wenn ich mongoose.connect benutzt habe, bekomme ich immer diese Warnung

DeprecationWarning: open() ist in Mongoose >= 4.11.0 veraltet, verwenden Sie stattdessen openUri() oder setzen Sie die Option useMongoClient , wenn Sie connect() oder createConnection() verwenden http://mongoosejs.com/docs/connections.html#use -mongo-client

im on node: 8.7 , Mungo: 4.12.2

Versuche dies,

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



Nun, mein Fehler, das war keine Schuld von Mangos.

Ich verwende Mocha und musste den Parameter --exit hinzufügen, um den Aufruf von process.exit zu erzwingen.

Ich schätze, ohne diesen Parameter macht Mokka einfach ... am Ende des Tests nichts und wartet.

Das Beenden des Prozesses zu erzwingen ist nur eine Problemumgehung. Das Problem ist, dass es so aussieht, als ob, wenn Sie mehrere Verbindungen geöffnet haben und mongoose.disconnect() verwenden, immer noch ein Socket offen bleibt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen