无法存根控制器组件

Unable to stub controller components

play.api.test 中的方法 stubControllerComponents 似乎使用相同的包和对象名称作为单独的依赖项,这在我尝试使用 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 :

但是这个版本的 class 是用 import play.api.test 导入的:

播放 link 存根: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 未找到:

更新2:

您似乎在使用暂存文件。 AFAICS,无法将测试范围中的依赖项也包含到工作表的类路径中。

解决方法是(暂时)将游戏测试工件添加到您的 libraryDependencies。或者只是创建一个适当的测试文件,它可以正常访问测试库。

play.api.test.Helpers.stubControllerComponentsplay-test 提供 依赖性

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

project/plugins.sbt

指定的 Play sbt plugin 间接导入
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1")

在项目的 build.sbt 中显式 enablePlugins(PlayScala) 之后。

请注意 play-test 如何开箱即用地限定为 test 配置,因此它仅在测试类路径中提供。如果您希望从 IntelliJ Scala Worksheet 中引用 stubControllerComponents,请确保在 test/ 目录而不是 app/ 目录中创建工作表。这将使 Scala 工作表使用 test 类路径。