【问题标题】:Add values to Session during testing (FakeRequest, FakeApplication)在测试期间向 Session 添加值(FakeRequest、FakeApplication)
【发布时间】:2012-04-02 23:07:23
【问题描述】:

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

我尝试扩展 FakeRequest 并覆盖 session 值,但编译时出现错误提示 session 在覆盖时必须是 val,这是行不通的。

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

【问题讨论】:

  • 您是否确实通过使用已接受答案中的拉取请求解决了这个问题?或者您是否找到了一种无需使用修改版 Play 即可实现此目的的方法?
  • @arjan 嗨,不,我没有拉它,但我知道这是解决方案。期待它很快被整合

标签: scala playframework-2.0


【解决方案1】:

有一个关于此功能的拉取请求

https://github.com/playframework/Play20/pull/103

【讨论】:

    【解决方案2】:

    我使用了拉取请求中的一些示例来构建它,而不使用更新版本的 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")
    

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

    【讨论】:

    • 这在测试 WithServer 和 WS.url(...) 而不是 FakeRequest 时很有用
    猜你喜欢
    • 2012-10-31
    • 2012-06-09
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多