2011-11-22 73 views
2

我一直在嘗試學習如何使用expresso進行單元測試,並難以從異步貓鼬數據庫調用中獲取結果。似乎測試不會等待異步調用返回,所以我的斷言總是失敗。我該如何測試與expresso貓鼬異步調用

"get tasks" : (beforeExit, assert) -> 
    tasks = null 
    Task.find {}, (err, result) -> 
     if not err 
      console.log 'results' 
      tasks = result 
     else 
      console.log 'error' + err 
     should.not(err) 

    beforeExit -> 
     tasks.should.not(null) 

看起來這可能是掛在貓鼬連接呼叫以及

db = mongoose.connect config.connStr 

回答

0

所以想通了這對夫妻的事情,是造成這種邦克出來。我的第一個錯誤是沒有在拆卸/ beforeexit時調用mongoose.disconnect(),我應該在設置函數中調用mongoose.connect。我遇到的另一個問題是,如果我對不在同一父目錄中的模型文件進行了必需的引用,那麼我的測試無法從貓鼬模型查詢Task.find得到響應。{}

因此保持在根父目錄測試文件引起Task.find {}掛即使基準是正確的

models = require "./../Services/models" 

,但如果我移動的測試文件成services文件夾,它神祕地工作,不知道爲什麼

models = require "./../models"