2012-03-17 25 views
5

Estoy intentando construir algunas pruebas alrededor de un método que lee algunos datos de la sesión.Agregar valores a la Sesión durante la prueba (FakeRequest, FakeApplication)

he intentado extender FakeRequest y anulando el valor session, pero me da un error en la compilación diciendo que session tiene que haber un val cuando anulado, lo que no va a funcionar.

¿Cómo puedo modificar un FakeRequest() para agregar valores a la sesión?

+0

¿Ha resuelto esto utilizando la solicitud de extracción de la respuesta aceptada? ¿O encontró una forma de lograr esto sin usar una versión modificada de Play? – Arjan

+0

@arjan hola, no, no lo tiré, pero veo que esa es la solución. Esperando que se integre pronto –

Respuesta

4

utilicé algunos ejemplos de la solicitud de extracción para construir esto en sin necesidad de utilizar una versión actualizada del juego:

Crear cookie:

val sessionCookie = Session.encodeAsCookie(Session(Map("key" -> "value"))) 

Crear y ejecutar fakeRequest:

val Some(result) = routeAndCall(FakeRequest(GET,"/").withHeaders(play.api.http.HeaderNames.COOKIE -> Cookies.encode(Seq(sessionCookie)))) 

Luego de conseguir cosas fuera creé el siguiente:

Dado el estilo existente de métodos de ensayo:

status(result) must equalTo(OK) 

hice:

def sessionCookie(result: Result): Option[Cookie] = cookies(result).get("PLAY_SESSION") 
def session(result: Result): Session = Session.decodeFromCookie(sessionCookie(result)) 

que llaman:

session(result).get("key") must be("value") 

Tengo que decir que esto no se prueba con ira. Pero mira si ayuda.

+0

esto fue útil al probar WithServer y WS.url (...) en lugar de FakeRequest – Khorkhe

Cuestiones relacionadas