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

Ant*_*shy 2 unit-testing mocha.js mongoose mongodb node.js

我一直在寻找这个地方。有些人似乎这样做

mongoose.connect('mongodb://localhost/test');
Run Code Online (Sandbox Code Playgroud)

继续他们的describe电话。异步等待呢?

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  // yay!
});
Run Code Online (Sandbox Code Playgroud)

我应该如何在Mocha测试中使用此连接?我应该将所有测试放在回调中吗?我应该在单元测试中包装等待连接的代码吗?连接将在describes和its 之间持续存在吗?

Rod*_*ros 5

猫鼬connect功能支持回调。

由于Mocha异步版本before也接受回调(通常称为done),因此只需将其传递给connect函数即可,例如:

describe("Your test", function () {

  before(function (done) {
    mongoose.connect('mongodb://localhost/test', done);
  });
  // here you can write your tests
});
Run Code Online (Sandbox Code Playgroud)

这样,连接将在放置方法的describe范围内保持活动状态before

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

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
Run Code Online (Sandbox Code Playgroud)