Невозможно заглушить компоненты контроллера - PullRequest
0 голосов
/ 27 мая 2020

Метод stubControllerComponents в пакете play.api.test, похоже, использует тот же пакет и имя объекта в качестве отдельной зависимости, что вызывает конфликт, когда я пытаюсь использовать stubControllerComponents:

play.api.test.Helpers.stubControllerComponents не найдено в приведенном ниже коде:

import java.io.File

import play.api.test
import play.api.mvc._
import javax.inject._
import play.api.Environment
import play.api.mvc.{AbstractController, ControllerComponents}


class CountController @Inject() (cc: ControllerComponents,
                                 env: Environment) extends AbstractController(cc) {

   def getter() = Option(env.classLoader.getResourceAsStream("file.csv"))

}


play.api.Environment(play.api.test.Helpers.stubControllerComponents, Environment.simple())

Этот помощник содержит метод, который мне нужен stubControllerComponents:

enter image description here

Но эта версия класс импортируется с import play.api.test:

enter image description here

Воспроизвести ссылку для заглушки: https://www.playframework.com/documentation/2.6.x/Highlights26#StubControllerComponents

build.sbt:

name := "ddd"

version := "1.0" 

lazy val `ddd` = (project in file(".")).enablePlugins(PlayScala)

resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"

resolvers += "Akka Snapshot Repository" at "https://repo.akka.io/snapshots/"

scalaVersion := "2.12.2"

libraryDependencies ++= Seq( jdbc , ehcache , ws  , guice , specs2 % Test)

unmanagedResourceDirectories in Test <+=  baseDirectory ( _ /"target/web/public/test" )  

Нужно ли мне исключать части зависимости, в данном случае filters-helpers, чтобы сделать stubControllerComponents доступным?

Обновление:

play.api.test.Helpers.stubControllerComponents не найдено:

enter image description here

Обновление2:

enter image description here

Ответы [ 2 ]

1 голос
/ 27 мая 2020

play.api.test.Helpers.stubControllerComponents предоставляется play-test зависимостью

libraryDependencies += "com.typesafe.play" %% "play-test" % PlayVersion.current % "test",

, которая косвенно импортируется плагином Play sbt , указанным в project/plugins.sbt

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1")

после явно enablePlugins(PlayScala) в build.sbt.

Обратите внимание на то, что play-test изначально привязан к конфигурации test, поэтому он предоставляется только в пути к тестовым классам. Если вы используете sh для ссылки на stubControllerComponents из IntelliJ Scala Worksheet , убедитесь, что вы создали рабочий лист внутри каталога test/, а не внутри каталога app/. Это заставит Scala рабочий лист использовать test путь к классам.

1 голос
/ 27 мая 2020

Похоже, вы используете рабочий файл. AFAICS, нет способа также включить зависимости из вашей области тестирования в путь к классам вашего рабочего листа.

Обходным путем было бы (временно) добавить артефакт игрового теста в ваш libraryDependencies. Или просто создайте правильный тестовый файл, который обычно имеет доступ к тестовым библиотекам.

...