playframework-2.4 – (播放2.4.2,播放Slick 1.0.0)如何在测试中将数据库演变应用于Slick托管数据库?

我想针对Play Slick托管数据库编写数据库集成测试,并使用Play文档中描述的帮助方法(即Evolutions.applyEvolutions(数据库)和Evolutions.cleanupEvolutions(数据库))应用和取消应用Evolutions.但是这些需要一个play.api.db.Database实例,这是我无法从中看到的. jdbc库与play-slick冲突,那么如何从光滑中获取数据库实例?我使用以下内容来获得一个灵活的数据库def来运行光滑的查询:

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

谢谢,

李亚男

最佳答案
以下是我如何用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,但与其他测试框架一样.)

转载注明原文:playframework-2.4 – (播放2.4.2,播放Slick 1.0.0)如何在测试中将数据库演变应用于Slick托管数据库? - 代码日志