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
});
这样,在放置
方法之前,连接将在描述
范围内保持活动状态
但是,如果您想对测试文件中的所有测试使用连接,只需在alldescription
之前调用它:
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代码中的之前的移到描述之外,所有描述都将共享同一个客户端?实际上,如何保存对此连接的引用以供以后使用?