使用scalatest
和Casbah,我创建了一个测试,将一堆文档加载到Mongo中,然后断言collection.count() > 0
。
val collection = MongoConnection()(MY_DB)(MY_COLLECTION)
collection.dropCollection // clear out any docs from previous test run
insert200DocumentsIntoMongo() // inserts 200 docs into the same DB and collection
assert(collection.size > 0)
对于多个测试,scalatest
会抛出断言不为真的异常。
然而,在测试失败之后,我可以在Mongo shell中清楚地看到,根据上面的“MY_DB”和“MY_COLLECTION”,已将200个文档添加到Mongo数据库的集合中。
>db.test.count()
200
我很困惑为什么这个断言失败了,因为Mongo shell证明了集合中有200个文档。
另外,我尝试使用此post删除整个数据库,但断言仍然失败。
答案 0 :(得分:1)
尝试更改mongo写入问题:
collection.setWriteConcern(WriteConcern.FsyncSafe)
答案 1 :(得分:1)
有几个选择:
一个改变mongo写作关注的问题,谢尔盖指出。
Mongo默认情况下会异步写入,这意味着当您触发插入时,它不会等待数据插入并继续前进。更改写入问题将使您的测试工作,但如果您不在生产环境中使用此选项,则可能会出现问题,具体取决于您正在测试的内容。
另一种选择是在做断言之前等待,这可能比较棘手。
最后你可以使用getLastError,它将阻止执行,直到最后一个命令被执行。
了解更多here