2011-11-22 32 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"