2012-01-04 15 views
8

Estoy usando rspec y capybara para las pruebas de integración.objeto de sesión en la prueba de integración rspec

¿Es su una forma de hacer objetos de sesión en las especificaciones de solicitud?

Tengo una página vista en la que yo uso un objeto de sesión para comprobar su valor para mostrar el contenido selectiva.

El problema es que no puedo crear un objeto de sesión en la especificación de solicitud. Aquí es un ejemplo de la vista:

<% if session[:role] == "Role" %> 
---content--- 
<% else %> 
--content-- 
<% end %> 

Y dentro de mi solicitud de especificaciones

session[:role] = "Role" 
visit my_path 

Pero me tira un error "método no definido 'sesión' para nada: NilClass".

También traté de buscar la creación de objetos de sesión de capybara. Pero no pude encontrar nada.

¿Hay alguna solución para esto? No puedo encontrar nada relacionado con esto, parece que no es posible. Se agradece un poco de ayuda.

+0

Dentro de la condición if probablemente haya querido decir == en lugar de =. –

+0

sí, lo siento, quise decir == aquí –

Respuesta

3

La forma en que se supone que debe hacer es visitar petición especificaciones cualquier URL que el usuario normalmente tendría que visitar a fin de que la variable de sesión que desea ajustar.

No conozco otra forma, tal vez otra que configurar la cookie de sesión a mano. Capybara.current_session.driver.browser.set_cookie, hazlo, pero deberías crear el valor de la cookie a mano.

+0

intenté esto: cookies [: role] = "Coaching", Capybara.current_session.driver.browser.set_cookie (cookies [: role]) ,, pero no funciona.what mi haciendo mal? –

+1

Eso no configurará la sesión. Tendrá que reproducir cómo rails genera cookies de sesión y usar el resultado de eso en la llamada a set_cookie. Definitivamente está fuera del camino trillado aquí - como he dicho, el enfoque habitual es simplemente visitar la página que establece la sesión –

+0

en mi caso configuro estas sesiones en un método privado en el controlador de la aplicación. –

Cuestiones relacionadas