Node.js 与猫鼬连接时,摩卡在执行后挂起

Node.js 与猫鼬连接时,摩卡在执行后挂起,node.js,mongodb,mongoose,mocha.js,Node.js,Mongodb,Mongoose,Mocha.js,说话很便宜,给我看看代码 莱纳斯·托瓦尔德 使用mocha和supertest进行集成测试。这是密码 //app.js mongoose.Promise = global.Promise; mongoose.connect(config.mongoURL, error => { if (error) { throw error; } console.log('Connected to mongodb'); }); modules.export = app; /

说话很便宜,给我看看代码

莱纳斯·托瓦尔德

使用
mocha
supertest
进行集成测试。这是密码

//app.js
mongoose.Promise = global.Promise;
mongoose.connect(config.mongoURL, error => {
  if (error) {
    throw error;
  }

  console.log('Connected to mongodb');
});

modules.export = app;



// test.js
it('returns 200', () => {
  return supertest(app).get('/').expect(200);
});
基本上,测试运行后,输出“连接到mongodb”会记录日志(我只有3个测试,没有一个使用db),然后mocha挂起,我必须按住Ctrl+C。我可能错过了一些配置,但我看不到它

不用说,注释mongoose行(
mongoose.connect(…)
)可以修复它


我遗漏了什么?

测试完成后,您必须断开与数据库的连接。例如,这可以在
after
功能中完成

after((完成)=>{
应用程序关闭(()=>{
猫鼬。连接。关闭(完成);
});
});

如果不断开连接,您将得到您描述的症状。

更简单的答案

after((done) => {
    mongoose.connection.close(done);
});

这是有道理的,但是为什么我从来没有在教程中看到过呢?没有其他方法自动级联SIGTERM吗?