【发布时间】:2019-12-02 10:48:26
【问题描述】:
给定一个处理查询参数的简单 Play 2.6.24 控制器,即
class MyController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {
def foo(name: Option[String]= None) = { ... }
}
我应该如何使用 ScalaTest 测试 foo 是否正常工作并获取正确的查询参数,而不实例化 FakeApplication ?
我得到的最接近的是:
class MyControllerSpec extends FlatSpec with StubControllerComponentsFactory with Results with Matchers {
private val controller = new MyController(stubControllerComponents())
it should "read `name` query parameter" in {
val result = controller.foo().apply(FakeRequest("GET", "/?name=test"))
contentAsString(result) shouldBe ...
}
}
但是,如您所知,这不起作用:FakeRequest 内容将被忽略,我必须明确地将控制器称为controller.foo(Some("test")).apply(...),这看起来不太好,也不合逻辑(为什么我还要提供一个不会被使用的 FakeRequest?)。
我有一种感觉,因为它是在路由级别完成的,所以我将不得不使用 FakeApplication……但也许我错了,有人知道实现我正在寻找的方法。
谢谢!
【问题讨论】:
标签: scala testing playframework