我为异步瀑布编写了一个mocha测试用例,“function2”是调用mongodb获取数据的模块,当我尝试在node.js中运行相同的代码时,这个异步代码可以工作,但是当我做mocha测试mongodb的“function2”调用抛出错误说“[错误:无法确定服务器的状态]”。
我必须知道测试快速执行的原因,而不是等待mongodb连接并返回结果。
有人可以建议我如何解决这个问题。提前谢谢。
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);
});
});
});
答案 0 :(得分:1)
我不确定但是在建立连接(使用你的模块)时会尝试等待。
before(function(done) {
connection.on('open', done);
});