2012-03-17 3 views
5

Я пытаюсь создать несколько тестов вокруг метода, который считывает некоторые данные из сеанса.Добавить значения в сеанс во время тестирования (FakeRequest, FakeApplication)

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

Как изменить FakeRequest() для добавления значений в сеанс?

+0

Вы действительно решили это, используя запрос на тягу из принятого ответа? Или вы нашли способ достичь этого, не используя модифицированную версию Play? – Arjan

+0

@arjan привет, нет, я не потянул его, но я вижу, что это решение. Ожидая, что он скоро будет интегрирован –

ответ

4

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

Создать печенье:

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

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

+0

, это было полезно при тестировании WithServer и WS.url (...) вместо FakeRequest – Khorkhe

Смежные вопросы