Unit testing 如何使用expresso测试mongoose中的异步调用

Unit testing 如何使用expresso测试mongoose中的异步调用,unit-testing,mongoose,Unit Testing,Mongoose,我一直在尝试学习如何使用expresso进行单元测试,但对于从异步mongoose数据库调用中获得结果感到困惑。似乎测试不会等待异步调用返回,所以我的断言总是失败 "get tasks" : (beforeExit, assert) -> tasks = null Task.find {}, (err, result) -> if not err console.log 'results' tasks =

我一直在尝试学习如何使用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)
看起来它可能也挂在猫鼬连接电话上

db = mongoose.connect config.connStr

所以我找到了导致这一切的两个原因。我的第一个错误是没有在拆卸时调用mongoose.disconnect/beforexit,我应该在设置函数中调用mongoose.connect。我遇到的另一个问题是,如果有对不在同一父目录中的模型文件的require引用,我的测试无法从mongoose model query Task.find{}获得响应

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

models = require "./../Services/models"
但是如果我把测试文件移到services文件夹中,它会神秘地工作,不知道为什么

models = require "./../models"

所以我找到了导致这一切的两个原因。我的第一个错误是没有在拆卸时调用mongoose.disconnect/beforexit,我应该在设置函数中调用mongoose.connect。我遇到的另一个问题是,如果有对不在同一父目录中的模型文件的require引用,我的测试无法从mongoose model query Task.find{}获得响应

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

models = require "./../Services/models"
但是如果我把测试文件移到services文件夹中,它会神秘地工作,不知道为什么

models = require "./../models"