Specs2: как проверить класс с более чем одной введенной зависимостью?
Приложение Play 2.4, используявнедрение зависимости для классов обслуживания.
Я обнаружил, что Specs2 задыхается, когда тестируемый класс обслуживания имеет более одной введенной зависимости. Не удается с "Не могу найти конструктор для класса ..."
$ test-only services.ReportServiceSpec
[error] Can't find a constructor for class services.ReportService
[error] Error: Total 1, Failed 0, Errors 1, Passed 0
[error] Error during tests:
[error] services.ReportServiceSpec
[error] (test:testOnly) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 2 s, completed Dec 8, 2015 5:24:34 PM
Код продукциираздели до минимума, чтобы воспроизвести эту проблему:
package services
import javax.inject.Inject
class ReportService @Inject()(userService: UserService, supportService: SupportService) {
// ...
}
class UserService {
// ...
}
class SupportService {
// ...
}
Тестовый код:
package services
import javax.inject.Inject
import org.specs2.mutable.Specification
class ReportServiceSpec @Inject()(service: ReportService) extends Specification {
"ReportService" should {
"Work" in {
1 mustEqual 1
}
}
}
Если я удалю либоUserService
или жеSupportService
зависимость отReportService
Тест работает. Но очевидно, что зависимости находятся в производственном коде по причине.Вопрос в том, как мне заставить этот тест работать?
редактировать: При попытке запустить тест внутри IntelliJ IDEA происходит сбой той же самой вещи, но с разными сообщениями: «Тестовый фреймворк неожиданно завершил работу», «Это похоже на исключение specs2 ...»; увидетьполный вывод со стековой трассировкой, Я открыл Specs2вопрос как указано в выходных данных, хотя я понятия не имею, если проблема в Play или Specs2 или где-то еще.
Мои библиотечные зависимости ниже. (Я пытался указать версию Specs2эксплицитно, но это не помогло. Похоже, мне нужноspecs2 % Test
как есть, для тестовых классов Play, таких какWithApplication
работать.)
resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"
libraryDependencies ++= Seq(
specs2 % Test,
jdbc,
evolutions,
filters,
"com.typesafe.play" %% "anorm" % "2.4.0",
"org.postgresql" % "postgresql" % "9.4-1205-jdbc42"
)