Mongoose: Processo de teste de unidade não está saindo devido ao mangoose?

Criado em 16 out. 2017  ·  3Comentários  ·  Fonte: Automattic/mongoose

Oi
4.12.0

Eu adicionei alguns testes Mocha/Chai ao meu aplicativo de trabalho (Express+mangoose) e notei algo que não estava visível executando o aplicativo.

Emitir
Ao executar meus testes de unidade, o processo nunca sai e fica ocioso devido ao mangoose (aparentemente).

Nada incrível no trecho de código abaixo... Eu tentei alguns mangustos#disconnect no final do meu teste, mas não muda nada..

Você poderia, por favor, aconselhar sobre o que está bloqueando a saída do processo?

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

Comentários muito úteis

Forçar a saída do processo é apenas uma solução alternativa. O problema é que parece que se você tiver várias conexões abertas e usar mongoose.disconnect() , ainda deixará um soquete aberto.

Todos 3 comentários

toda vez que eu usei o mongoose.connect , eu sempre recebo esses avisos

Aviso de descontinuação: open() está obsoleto no mangusto >= 4.11.0, use openUri() ou defina a opção useMongoClient se estiver usando connect() ou createConnection() . Consulte http://mongoosejs.com/docs/connections.html#use -mongo-client

im no nó: 8.7 , mangusto: 4.12.2

tente isso,

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



Bem, meu mal, isso não foi culpa do mangoose.

Estou usando mocha e tive que adicionar o parâmetro --exit para forçar a chamada para process.exit.

Eu acho que sem esse parâmetro mocha apenas... não faz nada no final do teste e espera.

Forçar a saída do processo é apenas uma solução alternativa. O problema é que parece que se você tiver várias conexões abertas e usar mongoose.disconnect() , ainda deixará um soquete aberto.

Esta página foi útil?
0 / 5 - 0 avaliações