迁移到Play 2.5后,ReactiveMongo ConnectionNotInitialized In Test

时间:2016-05-12 15:35:17

标签: scala playframework scalatest reactivemongo scaldi

将我的Pl​​ay(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 [&#39;连接缺少元数据(如协议版本等)连接池可能正在初始化。&#39;] < / p>

我尝试过使用collection代替lazy val初始化def等一系列问题。但没有任何效果。

对如何让测试再次通过的任何见解表示赞赏。

1 个答案:

答案 0 :(得分:2)

感谢@cchantep,测试通过替换上面的代码按预期运行:

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

使用此代码

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

换句话说,reactiveMongoApi.database(以及由Future引起的适当更改)是可行的方法。