(Play 2.4.2, Play Slick 1.0.0)我如何在测试中将数据库evolution应用到Slick管理



我想针对Play Slick管理的数据库编写数据库集成测试,并使用Play文档中描述的辅助方法(即Evolutions.applyEvolutions(database)Evolutions.cleanupEvolutions(database))应用和取消应用evolution。然而,这些需要一个play.api.db.Database实例,这是不可能从我所能看到的。jdbc库与play-slick冲突,所以我如何从slick获得数据库实例?我使用以下命令来获得一个用于运行流畅查询的流畅数据库定义:

val dbConfig = DatabaseConfigProvider.get[JdbcProfile]("my-test-db")(FakeApplication())  
import dbConfig.driver.api._
val db = dbConfig.db

谢谢,

Leanne

我是这样使用Guice的:

我注入Guice:

lazy val appBuilder = new GuiceApplicationBuilder()
lazy val injector = appBuilder.injector()
lazy val databaseApi = injector.instanceOf[DBApi] //here is the important line

(必须导入play.api.db.DBApi.)

在我的测试中,我简单地做了以下操作(实际上我使用了另一个数据库进行测试):

override def beforeAll() = {
  Evolutions.applyEvolutions(databaseApi.database("default"))
}
override def afterAll() = {
  Evolutions.cleanupEvolutions(databaseApi.database("default"))
}

(我使用的是Scalatest,但它与其他测试框架是一样的)

最新更新