Mongoose: 由于 mangoose,单元测试过程没有退出?

创建于 2017-10-16  ·  3评论  ·  资料来源: Automattic/mongoose

你好
4.12.0

我在我的工作应用程序(Express+mangoose)中添加了一些 Mocha/Chai 测试,我注意到运行该应用程序时看不到一些东西。

问题
在运行我的单元测试时,该过程永远不会退出并且由于芒果(显然)而被闲置。

下面的代码片段没有什么了不起的......我在测试的最后尝试了一些 mongoose#disconnect 但没有改变任何东西..

您能否就阻止进程退出的原因提出建议?

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

最有用的评论

强制进程退出只是一种解决方法。 问题是,如果您打开了多个连接并使用mongoose.disconnect() ,它似乎仍然打开了一个套接字。

所有3条评论

每次我使用mongoose.connect时,我总是收到这些警告

弃用警告: open()在 mongoose >= 4.11.0 中已弃用,请改用openUri() ,如果使用connect()createConnection() ,请设置useMongoClient选项createConnection() 。 请参阅http://mongoosejs.com/docs/connections.html#use -mongo-client

我在节点上:8.7猫鼬:4.12.2

试试这个,

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



好吧,我的错,这不是芒果的错。

我正在使用 mocha 并且必须添加--exit参数来强制调用 process.exit。

我猜如果没有这个参数 mocha 只是......在测试结束时什么都不做并等待。

强制进程退出只是一种解决方法。 问题是,如果您打开了多个连接并使用mongoose.disconnect() ,它似乎仍然打开了一个套接字。

此页面是否有帮助?
0 / 5 - 0 等级