【问题标题】:(Play 2.4.2, Play Slick 1.0.0) How do I apply database Evolutions to a Slick managed database within a test?(Play 2.4.2, Play Slick 1.0.0) 如何在测试中将数据库 Evolutions 应用到 Slick 托管数据库?
【发布时间】:2015-08-07 18:13:34
【问题描述】:

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

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

谢谢,

李安

【问题讨论】:

    标签: playframework-2.4 play-slick


    【解决方案1】:

    这是我使用 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,但它与其他测试框架相同。)

    【讨论】:

    • 与 play 2.5.10、play-slick 2.0.2 完美配合。
    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2017-05-14
    相关资源
    最近更新 更多