迁移到Play 2.5后,ReactiveMongo ConnectionNotInitialized在测试中



在将我的Play(Scala)应用程序迁移到2.5.3之后,使用ReactiveMongo对我的代码进行的一些测试曾经通过,现在在设置中失败了。

这是我使用ScalaTest:的代码

def fixture(testMethod: (...) => Any) {
      implicit val injector = new ScaldiApplicationBuilder()
        .prependModule(new ReactiveMongoModule)
        .prependModule(new TestModule)
        .buildInj()          
      def reactiveMongoApi = inject[ReactiveMongoApi]
      def collection: BSONCollection = reactiveMongoApi.db.collection[BSONCollection](testCollection)
      lazy val id = BSONObjectID.generate
      //Error occurs at next line
      Await.result(collection.insert(Person(id = id, slug = "test-slug", firstName = "Mickey", lastName = "Mouse")), 10.seconds)
...
}

在插入行,我得到这个:

reactivemongo.core.errors.ConnectionNotInitialized:MongoError[连接缺少元数据(如协议版本等)连接池可能正在初始化中。']

我已经尝试了很多事情,比如用lazy val而不是def初始化collection。但什么都没用。

任何关于如何让我的测试再次通过的见解都将不胜感激。

多亏了@chantep,通过替换上面的代码,测试按预期运行:

def collection: BSONCollection = reactiveMongoApi.db.collection[BSONCollection](testCollection)

使用此代码

def collection: BSONCollection = Await.result(reactiveMongoApi.database.map(_.collection[BSONCollection](testCollection)), 10.seconds)

换言之,reactiveMongoApi.database(以及由于Future而进行的适当更改)是可行的。

相关内容

  • 没有找到相关文章

最新更新