在测试期间向Session添加值(FakeRequest,FakeApplication)

时间:2012-03-17 20:58:08

标签: scala playframework-2.0

我正在尝试围绕从会话中读取一些数据的方法构建一些测试。

我尝试扩展FakeRequest并覆盖session值,但是我在编译时遇到错误,说明session在覆盖时必须是val,赢得了'工作。

如何修改FakeRequest()以向会话添加值?

2 个答案:

答案 0 :(得分:5)

有关此功能的拉取请求

请参阅https://github.com/playframework/Play20/pull/103

答案 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")

不得不说这不是愤怒的测试。但看看它是否有帮助。