对于新的摩卡版本:
您现在可以将承诺返回给摩卡,摩卡将等待其完成后再继续。例如,以下测试将通过:
let a = 0;
before(() => {
return new Promise((resolve) => {
setTimeout(() => {
a = 1;
resolve();
}, 200);
});
});
it('a should be set to 1', () => {
assert(a === 1);
});
您可以在这里找到文档
对于较旧的摩卡版本:
如果希望异步请求在其他所有事情发生之前完成,则需要done
在before请求中使用该参数,然后在回调中调用它。
然后,Mocha将等待直到done
被调用以开始处理以下块。
before(function (done) {
db.collection('user').remove({}, function (res) { done(); });
})
it('test spec', function (done) {
});
after(function() {});
但是,您应该小心,因为不对数据库进行单元测试就可能会大大减慢执行速度,因为与简单代码执行相比,数据库中的请求可能会很长。
有关更多信息,请参阅Mocha文档。
before
处理程序中返回了承诺即可。例如before(function () { return db.collection...}