如何为Play Framework Filter编写测试?

Tor*_*ben 2 scala playframework playframework-2.0

我为我的Play应用程序编写了一个Filter:

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)))
      }

    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

托本

小智 5

play框架源代码显示了过滤器的测试.例如:

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")
Run Code Online (Sandbox Code Playgroud)

取自此处的SecurityHeadersFilterSpec.scala