2014-01-17 60 views
1

我已經爲異步瀑布編寫了一個mocha測試用例,「function2」是調用mongodb獲取數據的模塊,當我試圖在node.js中運行相同的代碼時這個異步代碼的作品,但當我做摩卡測試MongoDB的「function2」調用拋出錯誤說:「[錯誤:無法確定服務器的狀態]」。如何編寫異步瀑布的Mocha測試

我知道測試快速執行而不等待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

你同時解決了嗎? – Rocco

回答

1

我不確定,但嘗試等待連接(使用您的模塊)建立。

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