我们目前正在研究一个问题,我们在scala中使用specs2 togeather with mongodb / reactivemongo + Play!。
当我们运行写入mongodb的测试时,第一个操作运行正常,所有后续的测试/写入由于mongodb的超时而失败。
我们在这里找到了反应性mongo网站上已经记录的错误: https://github.com/ReactiveMongo/Play-ReactiveMongo/issues/32
是否有人知道此问题的解决方法?
我们已经尝试过:
非常感谢任何帮助!
答案 0 :(得分:1)
您可以更改(在您的Controller / Repo / DAO / Service或其他任何名称中):
val db = ReactiveMongoPlugin.db
到
def db = ReactiveMongoPlugin.db
将val表示为 def
因调用
而出现问题play.modules.reactivemongo.ReactiveMongoPlugin#db
返回当前的数据库设置,使其 val 将其连接到第一个测试。
每次测试之前的FYI Reactive Mongo插件建立与DB的连接,并在每次测试关闭之后。
答案 1 :(得分:0)
我的测试期间也有超时,这是我们Global.onStart()
功能的副作用。我们试图确保使用collection.indexesManager.ensure()
的Mongo索引,根据文档,这可能是一个阻塞操作。
由于我们有测试实例化新应用程序并写入/读入数据库,因此这些索引会导致大量超时。因此,一种解决方案可能是在启动应用程序时删除与索引的任何交互。
我知道这篇文章很老,但希望它可以帮助其他人。