Подтвердить что ты не робот

Как переопределить графические модули в модульных тестах Playframework с помощью ScalaTest

Я хочу написать функциональный тест для моего контроллера в PlayFramework. Для этого я хочу высмеять реализацию некоторых классов.

Я нашел хороший пример того, как это сделать, используя spec2 здесь: http://www.innovaedge.com/2015/07/01/how-to-use-mocks-in-injected-objects-with-guiceplayscala/

Но я использую scala тест с тэгом OneAppPerSuite, который использует FakeApplication. Вот документация: https://www.playframework.com/documentation/2.4.x/ScalaFunctionalTestingWithScalaTest

Проблема в том, что я не могу найти способ перехвата в GuiceApplicationBuilder и переопределить некоторые привязки с макетной реализацией.

Вот реализация FakeApplication из play.api.test:

case class FakeApplication(
  override val path: java.io.File = new java.io.File("."),
  override val classloader: ClassLoader = classOf[FakeApplication].getClassLoader,
  additionalPlugins: Seq[String] = Nil,
  withoutPlugins: Seq[String] = Nil,
  additionalConfiguration: Map[String, _ <: Any] = Map.empty,
  withGlobal: Option[play.api.GlobalSettings] = None,
  withRoutes: PartialFunction[(String, String), Handler] = PartialFunction.empty) extends Application {

private val app: Application = new GuiceApplicationBuilder()
  .in(Environment(path, classloader, Mode.Test))
  .global(withGlobal.orNull)
  .configure(additionalConfiguration)
  .bindings(
    bind[FakePluginsConfig] to FakePluginsConfig(additionalPlugins, withoutPlugins),
    bind[FakeRouterConfig] to FakeRouterConfig(withRoutes))
  .overrides(
    bind[Plugins].toProvider[FakePluginsProvider],
    bind[Router].toProvider[FakeRouterProvider])
  .build

Таким образом, я не могу перехватить привязки GuiceApplicationBuilder и переопределить.

Я новичок в playframework, так что извините, если вопрос выглядит немного глупо. Спасибо!

4b9b3361

Ответ 1

Вероятно, вы используете более старую версию ScalaTestPlus, которая не поддерживает переопределение FakeApplication с помощью приложения. В Play docs (Play 2.4) версия библиотеки "1.4.0-M3", но она должна быть "1.4.0".