2012-07-03 7 views
5

estoy tratando de pasar una cookie cuando se hace una petición GET, utilizando rspec 2 y 3. carrilesgalletas de aprobado en la solicitud de especificaciones

He intentado lo siguiente hasta ahora.

get "/", {}, {"Cookie" => "uuid=10"} # cookies[:uuid] is nil 
request.cookies[:uuid] = 10 # request is nil 
@request.env["Cookie"] = "uuid=10" # @request is nil 
helper.request.cookies[:uuid] # helper is not defined 
cookies[:uuid] = 10 # cookies[:uuid] is nil 
controller.cookies[:uuid] = 10 # cookies is nil 

¿Es posible?

Respuesta

2

tuve un problema similar y no encontré una solución adecuada para esto.

el estado rspec-rails docs que debería ser posible:

# spec 
request.cookies['foo'] = 'bar' 
get :some_action 
response.cookies['foo'].should eq('modified bar') 

en mi especificación request es siempre nil antes de ejecutar un GET.

Ahora estoy burlando del galletas:

before { ActionDispatch::Request.any_instance.stubs(cookies: {locale: :en}) } 

this guy tiene un problema similar.

+0

Los documentos con los que enlace son para las especificaciones del controlador, no solicitar especificaciones, por lo que '' vuelve request' las negativas. También tratando de descubrir cómo hacer esto en RSpec 3.4. –

1

por this answer, puede utilizar el método cookies plazo de solicitud de especificaciones:

before { cookies['foo'] = 'bar' } 

Probé solución de @ phoet implica ActionDispatch::Request.any_instance.stubs, pero arroja un error junto con un mensaje de desaprobación aparentemente no relacionada en RSpec 3.4.

0

que estaba un poco confundido por la forma en que hizo esto al principio, pero en realidad es muy fácil. Dentro de ActionDispatch de Rails :: IntegrationTest (o en el caso de rspec una especificación :request) tiene acceso a una variable de cookies.

funciona así:

# set up your cookie 
cookies["fruits"] = ["apple", "pear"] 

# hit your endpoint 
get fruits_path, {}, {} 

# this works! 
expect(cookies["fruits"]).to eq(["apple", "pear"]) 
Cuestiones relacionadas