rails matchers ruby-on-rails rspec rspec2

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