我正在尝试围绕从会话中读取一些数据的方法构建一些测试。
我尝试扩展FakeRequest
并覆盖session
值,但是我在编译时遇到错误,说明session
在覆盖时必须是val
,赢得了'工作。
如何修改FakeRequest()
以向会话添加值?
答案 0 :(得分:5)
有关此功能的拉取请求
答案 1 :(得分:4)
我使用pull请求中的一些示例来构建它,而不使用play的更新版本:
创建cookie:
val sessionCookie = Session.encodeAsCookie(Session(Map("key" -> "value")))
创建并执行fakeRequest:
val Some(result) = routeAndCall(FakeRequest(GET,"/").withHeaders(play.api.http.HeaderNames.COOKIE -> Cookies.encode(Seq(sessionCookie))))
然后为了解决问题,我创建了以下内容:
鉴于现有的测试方法风格:
status(result) must equalTo(OK)
我做了:
def sessionCookie(result: Result): Option[Cookie] = cookies(result).get("PLAY_SESSION")
def session(result: Result): Session = Session.decodeFromCookie(sessionCookie(result))
你打电话:
session(result).get("key") must be("value")
不得不说这不是愤怒的测试。但看看它是否有帮助。