【问题标题】:Scala play controller function typeScala 播放控制器功能类型
【发布时间】:2014-03-09 19:30:07
【问题描述】:

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

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

【问题讨论】:

    标签: scala testing playframework-2.0


    【解决方案1】:

    您可能需要将函数本身设为通用:

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

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

    【讨论】:

    • 我找到了解决办法,我应该通过ctlrFunc: Action[AnyContent]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    相关资源
    最近更新 更多