scala - 如何为 Play 框架过滤器编写测试?

标签 scala playframework playframework-2.0

我为我的 Play 应用程序编写了一个过滤器:

object MyFilter {
  def apply() = new MyFilter()
}

class MyFilter extends EssentialFilter {
  def apply(next: EssentialAction) = new EssentialAction {
    def apply(requestHeader: RequestHeader) = {

      requestHeader.cookies.get("myCookie") match {
        case Some(cookie) => {
          requestHeader.session + ("importantValue", cookie.value)
          next(requestHeader)
        }
        case None => {
          val importantValue = ... // retrieve the value from somewhere
          requestHeader.session + ("importantValue", importantValue)
          next(requestHeader).map(_.withCookies(Cookie("importantValue", value)))
      }

    }
  }
}

Play 文档中有很多关于如何编写测试的示例,但我不知道如何对 MyFilter 进行单元测试。有人可以帮我一点吗?

谢谢

托尔本

最佳答案

Play Framework 源代码显示了过滤器的测试。 例如:

val filter = SecurityHeadersFilter()
// Play.current is set at this point...
val rh = FakeRequest()
val action = Action(Ok("success"))
val result = filter(action)(rh).run()

header(X_FRAME_OPTIONS_HEADER, result) must beSome("DENY")

取自这里SecurityHeadersFilterSpec.scala

关于scala - 如何为 Play 框架过滤器编写测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286565/

相关文章:

scala - 参数化类中的类型不匹配 - 但为什么呢?

json - GATLING JSON 保存和重用

java - 我应该使用 Play Framework 还是普通的 Java EE

scala - 如何在 Play2.4/Scala 中自动订阅 actor 到 akka 事件总线

scala - 通用模板库

java - 你如何在 Play Framework scala 模板中使用 DTO?

scala - docker akka和scala,应用程序无故启动和停止

apache - 前端代理未正确引用资源

java - 更改 session 变量而不重新加载页面

scala - 如何更改 play/sbt 下自定义配置的设置值?