无法存根控制器组件
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.stubControllerComponents
由 play-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
类路径。
包 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.stubControllerComponents
由 play-test
提供
依赖性
libraryDependencies += "com.typesafe.play" %% "play-test" % PlayVersion.current % "test",
由 project/plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1")
在项目的 build.sbt
中显式 enablePlugins(PlayScala)
之后。
请注意 play-test
如何开箱即用地限定为 test
配置,因此它仅在测试类路径中提供。如果您希望从 IntelliJ Scala Worksheet 中引用 stubControllerComponents
,请确保在 test/
目录而不是 app/
目录中创建工作表。这将使 Scala 工作表使用 test
类路径。