当我使用 Mocha 进行测试时,我经常需要同时运行异步和同步测试。
Mocha 很好地处理了这个问题,让我可以done
在我的测试是异步的时候指定一个回调 , 。
我的问题是,Mocha 如何在内部观察我的测试并知道它应该等待异步活动?只要我在测试函数中定义了回调参数,它似乎就在等待。您可以在下面的示例中看到,第一个测试应该超时,第二个应该在user.save
调用匿名函数之前继续并完成。
// In an async test that doesn't call done, mocha will timeout.
describe('User', function(){
describe('#save()', function(){
it('should save without error', function(done){
var user = new User('Luna');
user.save(function(err){
if (err) throw err;
});
})
})
})
// The same test without done will proceed without timing out.
describe('User', function(){
describe('#save()', function(){
it('should save without error', function(){
var user = new User('Luna');
user.save(function(err){
if (err) throw err;
});
})
})
})
这是 node.js 特有的魔法吗?这是可以在任何 Javascript 中完成的事情吗?