如何撰写asynchronous瀑布的摩卡testing

我为asynchronous瀑布写了一个mochatesting用例,“function2”是调用mongodb获取数据的模块,当我尝试在node.js中运行相同的代码时,这个asynchronous代码工作,但是当我做摩卡testingmongodb的“function2”调用会抛出错误:“[Error:Can not determine state of server]”。

我知道testing快速执行的原因,而不用等待mongodb连接并返回结果。

有人可以build议我如何解决这个问题。 提前致谢。

var function1 = require('../../method1'); var function2 = require('../../method2'); var function3 = require('../../method3'); describe('controller : ', function () { it('should not return error', function (done) { async.waterfall([ function(callback){ function1.method1(app.request, app.response, function(err,result) { if(err){ callback(err,null); } else{ var var1 = result; callback(null, var1); } }); }, function(var1, callback){ //Here I have a Mongodb Call function2.method2(var1,function(err,result) { if(err) { callback(err,null); } else{ var var2= result; var context = { "c1": var1, "c2": var2 }; callback(null, context); } }); }, function(context, callback){ function2.method2(context, function(err,result) { if(err){ console.error(err); callback(err,null); } else{ context.c3 = {}; result.forEach(function(e, i) { for(var key in e) { context.c3[key] = e[key]; } }); callback(null, context); } }); }, function(context, callback){ should.exist(context); } ], function (err, result) { should.not.exist(err); should.exist(result); }); }); }); 

我不确定,但尝试等待连接(使用您的模块)build立。

 before(function(done) { connection.on('open', done); });