ruby on rails - matchers - Rspec: configuración de cookies en una prueba de ayuda
ruby on rails selenium (4)
Método de ayuda
# Determine if this is user''s first time
def first_time?
cookies[:first_time].nil?
end
Intento de prueba Rspec
it "returns true if the cookie is set" do
cookies[:first_time] = "something"
helper.first_time?().should be(true)
end
Error:
undefined method `cookies'' for nil:NilClass
Todo lo que he leído sobre Rspec y las cookies tiene que ver con el controlador. ¿Alguna forma de obtener / configurar cookies en las pruebas de ayuda de Rspec?
(Rspec / Rspec-rails 2.5, Rails 3.0.4)
¡¡Gracias!!
ACTUALIZAR:
Encontré una respuesta sobre cómo CONFIGURAR las cookies, así que la dejaré aquí para referencia de otros.
La pieza que estaba buscando:
helper.request.cookies[:awesome] = "something"
Aún no se como CONSEGUIR cookies ...
En una prueba de controlador esto funciona:
@request.cookies[:cookie_name] = "cookie_value"
en un bloque anterior.
Encontré esto here
La mejor explicación que he podido encontrar está aquí: https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/cookies
Citado
Pautas recomendadas para rieles-3.0.0 a 3.1.0
- Acceda a las cookies a través de los objetos de solicitud y respuesta en la especificación.
- Utilice request.cookies antes de la acción para configurar el estado.
- Utilice response.cookies después de la acción para especificar resultados.
- Utilice el objeto cookies en la acción del controlador.
- Utilice las teclas de cadena.
Ejemplo:
# spec
request.cookies[''foo''] = ''bar''
get :some_action
response.cookies[''foo''].should eq(''modified bar'')
# controller
def some_action
cookies[''foo''] = "modified #{cookies[''foo'']}"
end
Me topé con tu pregunta (estaba buscando una respuesta). Intenté esto con éxito:
helper.request.cookies[:foo] = "bar"
Usted obtiene las cookies de la misma manera que las configura. Ejemplo de una de mis especificaciones:
request.cookies[:email].should be nil