mocha before()中的asynchronous函数在it()spec之前完成了吗?

before()有一个callback函数,用于清理数据库。 before()所有内容都保证在it()开始之前完成?

 before(function(){ db.collection('user').remove({}, function(res){}); // is it guaranteed to finish before it()? }); it('test spec', function(done){ // do the test }); after(function(){ }); 

如果希望在发生其他事情之前完成asynchronous请求,则需要在请求之前使用done参数,并在callback中调用它。

摩卡将等待,直到done被调用来开始处理下面的块。

 before(function (done) { db.collection('user').remove({}, function (res) { done(); }); // It is now guaranteed to finish before 'it' starts. }) it('test spec', function (done) { // execute test }); after(function() {}); 

你应该小心,因为不为unit testing数据库存根可能会严重拖慢执行,因为与简单的代码执行相比,数据库中的请求可能相当长。

有关更多信息,请参阅Mocha文档 。