Node.js 我应该如何在Mocha单元测试中初始化Mongoose连接?

Node.js 我应该如何在Mocha单元测试中初始化Mongoose连接?,node.js,mongodb,unit-testing,mongoose,mocha.js,Node.js,Mongodb,Unit Testing,Mongoose,Mocha.js,我一直在到处找这个。有些人似乎是这样 mongoose.connect('mongodb://localhost/test'); 然后继续他们的描述通话。那么异步等待呢 var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function (callback) { // yay! }); 我应该如何在摩卡测试中使用此连

我一直在到处找这个。有些人似乎是这样

mongoose.connect('mongodb://localhost/test');
然后继续他们的
描述
通话。那么异步等待呢

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  // yay!
});
我应该如何在摩卡测试中使用此连接?我应该把所有的测试都放在回调中吗?我应该在单元测试中包装等待连接代码吗?连接是否在
description
s和
it
s之间保持?

Mongoose函数支持回调

由于之前的Mocha异步版
也接受回调(通常称为
done
),只需将其传递给
connect
函数,如:

describe("Your test", function () {

  before(function (done) {
    mongoose.connect('mongodb://localhost/test', done);
  });
  // here you can write your tests
});
这样,在放置
方法之前,连接将在
描述
范围内保持活动状态

但是,如果您想对测试文件中的所有测试使用连接,只需在all
description
之前调用它:

before(function (done) {
  mongoose.connect('mongodb://localhost/test', done);
});

describe("first suite", function () {
  // do your tests
});

describe("second suite", function () {
  // do your tests
});

// and so on

我几乎所有的测试都需要这个连接。我是否应该将所有测试的
descripe
s放在这样一个大的
descripe
中?我看到有很多顶级
描述的测试。如果在此
descripe
之后再单独创建一个
descripe
,连接是否会持续?Ohhh!我可以在顶层描述之前做一个
,对吗?我没有意识到我可以这样通过
done
。现在这很有道理。这应该是每个
之前的一个
吗?不,只是在
之前的一个
,否则您只是根据
初始化一个新连接。Mongoose导出一个单例,因此您只需执行一次,每次导入一个模型(连接之前或之后),它仍应共享同一个底层mongodb客户端。因此,我应该能够将Rodrigo代码中的
之前的
移到
描述
之外,所有
描述
都将共享同一个客户端?实际上,如何保存对此连接的引用以供以后使用?