3

我们目前正在解决一个问题,我们在 scala 中使用 specs2 与 mongodb/reactivemongo + Play!。

当我们运行写入 mongodb 的测试时,第一个操作运行良好,所有后续测试/写入都因 mongodb 超时而失败。

我们在这里的响应式 mongo 站点上发现了似乎已经记录在案的错误: https ://github.com/ReactiveMongo/Play-ReactiveMongo/issues/32

有谁知道这个问题的解决方法?

我们已经尝试过:

  • 强制测试按顺序运行
  • 每个测试都在自己的假应用程序中运行
  • 在同一个假应用程序中运行所有测试
  • 将集合定义为 def(如上述问题 32 中所建议的)

任何帮助是极大的赞赏!

4

2 回答 2

1

您可以更改(在您的 Controller/Repo/DAO/Service 或您所称的任何内容中):

val db = ReactiveMongoPlugin.db

def db = ReactiveMongoPlugin.db

含义 val 到def

出现问题是因为调用

play.modules.reactivemongo.ReactiveMongoPlugin#db

返回当前数据库设置,因此使其val将其连接到第一个测试。

仅供参考,在每次测试Reactive Mongo Plugin建立与 DB 的连接之前并在每次测试后关闭它。

于 2013-10-19T07:30:32.200 回答
0

Global.onStart()我在测试期间也有超时,这是我们函数的副作用。我们试图确保 Mongo 索引collection.indexesManager.ensure(),根据文档,这可能是一个阻塞操作。

由于我们有实例化新应用程序和写入/读取数据库的测试,因此该索引会导致大量超时。因此,一种解决方案可能是在启动应用程序时删除与索引的任何交互。

我知道这篇文章很老了,但希望它可以对其他人有所帮助。

于 2016-05-12T13:36:59.717 回答