(Play 2.4.2, Play Slick 1.0.0) Как мне применить эволюцию базы данных к базе данных, управляемой Slick, в рамках теста?

Я хотел бы написать тесты интеграции базы данных с управляемой базой данных Play Slick, а также применить и отменить применение Evolution, используя вспомогательные методы, описанные в документации Play, а именно Evolutions.applyEvolutions(database) и Evolutions.cleanupEvolutions(database). Однако для этого требуется экземпляр 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

Спасибо,

Линн


person Leanne    schedule 07.08.2015    source источник


Ответы (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, но то же самое и с другой средой тестирования.)

person Simon    schedule 28.10.2015
comment
Отлично работал с play 2.5.10, play-slick 2.0.2. - person JulienD; 05.02.2017