Добавить значения в сеанс во время тестирования (FakeRequest, FakeApplication) - PullRequest
5 голосов
/ 18 марта 2012

Я пытаюсь построить некоторые тесты вокруг метода, который считывает некоторые данные из сеанса.

Я попытался расширить FakeRequest и переопределить значение session, но я получаю сообщение об ошибке при компиляции:что session должно быть val при переопределении, что не будет работать.

Как я могу изменить FakeRequest(), чтобы добавить значения в сеанс?

Ответы [ 2 ]

5 голосов
/ 18 марта 2012

Для этой функции есть запрос на извлечение

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

4 голосов
/ 27 марта 2012

Я использовал несколько примеров из запроса на получение, чтобы встроить это без использования обновленной версии игры:

Создать 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")

Должен сказать, что это не проверено гневом. Но посмотрите, поможет ли это.

...