Я использую Scala, Play 2.4 и Slick 3 в своем проекте. У меня есть код DAO, и он отлично работает от конца до конца.Play scala integration spec - Инъекционные зависимости через Guice
@Singleton()
class CompaniesDAO @Inject() (protected val dbConfigProvider: DatabaseConfigProvider) extends CompaniesComponent
with HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
}
Однако, я не могу заставить его работать должным образом в моем интеграционном тесте из-за материала dbConfig. Мой тест интеграции ниже:
class CompaniesDaoIntegrationSpec extends FunSpec with OneServerPerSuite {
def companiesDao(implicit app: Application) = {
val app2CompaniesDAO = Application.instanceCache[CompaniesDAO]
app2CompaniesDAO(app)
}
describe("create") {
it("should create ") {
companiesDao.create...
}
}
}
Если я не ставлю DB свойства в application.conf я получил следующее сообщение об ошибке:
[info] java.lang.RuntimeException: com.google.inject.ProvisionException: Unable to provision, see the following errors:
[info]
[info] 1) No implementation for play.api.db.slick.DatabaseConfigProvider was bound.
[info] while locating play.api.db.slick.DatabaseConfigProvider
[info] for parameter 0 at
Кажется, данный код выше, Play приложение считывает дб свойства из файла конфигурации, который находится по адресу /conf/application.conf
.
Мой проект установки немного отличается от того, как у нас есть несколько сред, поэтому мы имеем файл structuers как:
/conf/local/application.conf
/conf/testing/application.conf
/conf/staging/application.conf
/conf/production/application.conf
При запуске приложения воспроизведения с помощью команды, как: activator run -Dconfig.resource=/conf/local/application.conf
и все работают отлично. Я хочу сделать то же самое для спецификации интеграции: activator test -Dconfig.resource=/conf/local/application.conf
. Play будет считывать указанный конфигурационный файл для запуска интеграционных тестов.
Каков наилучший способ достичь этого?