2016-12-14 32 views
0

我有一個測試情況下如何使用雙回調摩卡和supertest

it("Searching with valid rollnumber", function(done) { 
    DbService.find_random_rollnumber(function(err, result) { 
     if(err) { 
      throw err; 
     } 
     request.get('/provider') 
     .query({id:result.rollnumber}) 
     .set('Authorization', "Bearer "+token_value) 
     .end(function(err, response) { 
      if(err) { 
       throw err; 
      } 
      console.log(response.body); 
      done(); 
     }) 
    }); 
}) 

其中DbService.js有一個叫find_random_rollnumber寫成

find_random_rollnumber : function(callback) { 
    connection.provider.findOne({}, function(err, result) { 
     if(err) { 
      throw err; 
     } 
     return callback(err, result); 
    }); 
}, 

這是不工作和功能拋出一個錯誤

Error: timeout of 10000ms exceeded. Ensure the done() callback is being called in this test. 
+0

你期望發生的?你期望測試通過嗎?你認爲它會因爲另一個錯誤而失敗嗎?你的'console.log'怎麼樣?它顯示了你的期望嗎?它顯示別的嗎?如果是後者,你期望的和你所得到的有什麼區別?在嘗試調試時您是否使用了其他'console.log'語句?他們展示了什麼? – Louis

回答

0

其實我沒有看到你的代碼中的任何瀑布,它應該工作。

對於開始,我建議您增加等待20秒的時間以查看超時是否是問題。

describe('',() => { 
    it('', done => { 
     //do your test 
    }).timeout(20000) 
}) 

如果仍是問題,那麼我想這個問題是在事件循環,你是不是調用回調某處...

+0

問題是與result.rollnumber ..當我試圖安慰它,它反之,如果我盡力勸慰整個結果正確的數據顯示... – questionar

+0

你能在評論中發佈的中的console.log顯示爲未定義結果? –

+0

它工作正常..問題在於集合模型的創建 – questionar