如何使用espresso在mongoose中测试异步调用

时间:2011-11-22 13:36:01

标签: unit-testing mongoose

我一直在努力学习如何使用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

1 个答案:

答案 0 :(得分:0)

因此弄清楚导致这种情况爆发的几件事情。我的第一个错误是没有在teardown / beforeexit上调用mongoose.disconnect(),我应该在setup函数中调用mongoose.connect。我遇到的另一个问题是,如果我对不在同一父目录中的模型文件有一个require引用,那么我的测试无法从mongoose模型查询Task.find {}中得到共鸣。

因此,即使引用正确,将测试文件保留在根父目录中也会导致Task.find {}挂起

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

但如果我将测试文件移到了服务文件夹中,它就会神秘地起作用,不知道为什么

models = require "./../models"