我一直在努力学习如何使用expresso进行单元测试,并且难以从异步mongoose数据库调用中获取结果。似乎测试不会等待异步调用返回,所以我的断言总是失败。
"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)
似乎它也可能挂在mongoose connect call上
db = mongoose.connect config.connStr
答案 0 :(得分:0)
因此弄清楚导致这种情况爆发的几件事情。我的第一个错误是没有在teardown / beforeexit上调用mongoose.disconnect(),我应该在setup函数中调用mongoose.connect。我遇到的另一个问题是,如果我对不在同一父目录中的模型文件有一个require引用,那么我的测试无法从mongoose模型查询Task.find {}中得到共鸣。
因此,即使引用正确,将测试文件保留在根父目录中也会导致Task.find {}挂起
models = require "./../Services/models"
但如果我将测试文件移到了服务文件夹中,它就会神秘地起作用,不知道为什么
models = require "./../models"