node.js - Mocha 在与 Mongoose 连接时执行后挂起

标签 node.js mongodb mongoose mocha.js

Talk is cheap, show me the code

Linus Torvald

使用 mochasupertest 进行集成测试。这是代码

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

基本上发生的情况是,测试运行后输出“Connected to mongodb”日志(我只有 3 个测试,没有一个使用数据库),然后 mocha 卡在那里,我必须 Ctrl+C。我可能错过了一些配置,但我看不到它。

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

我错过了什么?

最佳答案

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

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

如果您不断开连接,您将会出现您所描述的症状。

关于node.js - Mocha 在与 Mongoose 连接时执行后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725343/

相关文章:

javascript - 在特快专递中提出 Mongoose 请求吗?

javascript - 访问 Javascript 对象 - Node.js 的范围问题

javascript - 对记录进行排序,然后在 MongoDB 中使用 updateMany 进行限制

javascript - 为什么我的 json 对象的 `email` 属性不会显示在我的 jade 模板中?

javascript - Mongoose 聚合游标 promise

javascript - 避免mongodb批量插入重复键错误

Node.js - 如何从 process.stdin 读取长字符串(超过 10000 个字符)?

javascript - gulp 观察者和 promise 导致崩溃

javascript - nodejs在windows文件系统路径错误4058 ENOENT

node.js - 更新所有记录的子文档数组中的字段