Scala播放控制器功能类型

时间:2014-03-09 19:30:07

标签: scala testing playframework-2.0

我正在编写用于测试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的事情,但问题与此无关。

注意:可能存在类似的框架,但我会喜欢自己编写,一步一步。

1 个答案:

答案 0 :(得分:0)

您可能需要使该功能本身通用:

def controllerHasStatusCode[A](ctlrFunc:Request[A] => Result, expectedHttpCode: Int) = {
  val result = ctlrFunc(0)(FakeRequest())
  status(result) must equalTo(expectedHttpCode)
}

[A]可能需要进一步的类型约束。