首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vows和Mongoose进行异步测试

使用Vows和Mongoose进行异步测试
EN

Stack Overflow用户
提问于 2011-08-25 21:03:21
回答 1查看 520关注 0票数 0

使用Vows/Coffeescript/Mongoose并遇到与DB的异步问题。

在我的测试运行之前,我做了一些设置,包括清除测试数据库。一旦我在最后一个文档上调用了remove,我就会触发回调,这样Vows就可以继续执行测试中的下一步。问题是,不能保证数据库实际上已经被清除,因为事情是异步发生的。在这种情况下,我实际上想要同步,但我不确定如何实现。

下面是代码(誓言片段,然后是清除函数def):

代码语言:javascript
复制
'AND the test database is empty': 
  topic: ->
    testDB.purge "widgets_test", @callback

purge = (database, callback) ->
db = mongoose.connect "mongodb://localhost/#{database}"
modelCount = Models.length
for model in Models
    modelCount--
    model.find {}, (err, docs) ->
        docCount = docs.length
        for doc in docs
            doc.remove (err) ->
            docCount--
    # do callback after all data has been purged - setTimeout HACKHACKHACK
        if modelCount is 0 and docCount is 0
            setTimeout -> 
                callback()
            , 100

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-25 21:13:59

我使用的技巧是在后续批处理中运行测试之前,在单独的批处理中执行此设置/拆卸。

它似乎对我很有效(我也使用了誓言和Mongo)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7190834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档