我正在编写用于测试DSL风格的Play Framework控制器的工具,扩展PlaySpecification
,我需要将控制器方法传递给我的框架类的方法,但我对类型有点生疏。我在scaladoc中发现Action有(Request[A] => Result)
所以我做了:
def controllerHasStatusCode(ctlrFunc:Request[A] => Result, expectedHttpCode: Int) = {
val result = ctlrFunc(0)(FakeRequest())
status(result) must equalTo(expectedHttpCode)
}
但我有编译错误not found: type A
。有没有经验丰富的playframework帮助我,将控制器方法作为参数传递给我的函数?
最后,客户会做类似controller signin mustHaveHttpCode OK
的事情,但问题与此无关。
注意:可能存在类似的框架,但我会喜欢自己编写,一步一步。
答案 0 :(得分:0)
您可能需要使该功能本身通用:
def controllerHasStatusCode[A](ctlrFunc:Request[A] => Result, expectedHttpCode: Int) = {
val result = ctlrFunc(0)(FakeRequest())
status(result) must equalTo(expectedHttpCode)
}
[A]
可能需要进一步的类型约束。