Por lo que yo sé, no se puede. El valor de la sesión en las pruebas de integración (en los carriles 3.2.2) es una copia. (Dioses del riel: Corrígeme si estoy equivocado al ). Puede establecer el valor, pero no afectará el próximo get/post porque es una copia local de la sesión real. Ideal para pruebas afirmativas, no es tan bueno para mantener el estado en sesión durante la prueba de integración.
Tengo un controlador de prueba para admitir mis pruebas de JavaScript a través de Evergreen.
Mi solución fue agregar un método a mi controlador de prueba y una ruta disponible cuando NO estoy en producción, eso me permite establecer valores de sesión.
Básicamente mi método # set_session app_test las pantallas de los nombres de los parámetros para un prefijo, si el prefijo es encontrado, entonces el valor de sesión para el prefijo de nombre de parámetro se establece despojado. Algo así como:
params.each() do |key, value|
next if (key !~ /^set_session_/)
session[ key.slice(("set_session_".size())..-1).to_sym ] = value
end
# don't forget to render something/anything
Por lo tanto, para establecer las variables de sesión durante mis pruebas de integración, tengo una pequeña trozo de código como:
prefix = "set_session_"
post("/set_session.html", { (prefix + "user_id") => "My Name Is Mudd" })
No es tan bonita como "período de sesiones [: user_id] = ' My Name Is Mudd '", pero funciona. Mi próxima publicación/obtención verá la sesión [: user_id] establecida con el valor deseado.
Esto se extiende fácilmente para pasar enteros, símbolos, etc., y por supuesto, pares clave/valor de sesión múltiple se pueden establecer a la vez. No es bonito, pero no está mal.
Es contra twitter o facebook. – jbasko
¿Esto ayuda? http://stackoverflow.com/questions/5331045/testing-a-web-applications-facebook-integration-with-cucumber –