2011-09-15 14 views
15

Estoy tratando de probar una redirección en la página de inicio en mi aplicación sinatra (más específicamente, una aplicación padrino), en rspec. He encontrado redirect_to, sin embargo, parece estar en rspec-rails solamente. ¿Cómo lo prueba en sinatra?¿Cómo puedo probar una redirección en sinatra usando rspec?

Así que, básicamente, me gustaría algo como esto:

it "Homepage should redirect to locations#index" do 
    get "/" 
    last_response.should be_redirect # This works, but I want it to be more specific 
    # last_response.should redirect_to('/locations') # Only works for rspec-rails 
    end 

Respuesta

21

probar este (no probado):

it "Homepage should redirect to locations#index" do 
    get "/" 
    last_response.should be_redirect # This works, but I want it to be more specific 
    follow_redirect! 
    last_request.url.should == 'http://example.org/locations' 
end 
+0

estoy recibiendo el error: Fallo/Error: follow_redirect! Sequel :: DatabaseError: SQLite3 :: excepción de SQL: no hay tal tabla: ubicaciones . Supongo que es un problema de base de datos sin embargo. Tendremos que investigar esto más a fondo ... – zlog

+0

Sí, esto funciona. ¡Gracias! – zlog

+1

¿Puede decirme dónde están documentados esos métodos 'last_request',' last_response' ... ¿Cómo puede llamar a métodos como 'url' en esos. Soy nuevo, así que no pude conseguirlo. –

15

más directa sólo puede utilizar last_response.location.

it "Homepage should redirect to locations#index" do 
    get "/" 
    last_response.should be_redirect 
    last_response.location.should include '/locations' 
end 
1

En la nueva sintaxis expect que debe ser:

it "Homepage should redirect to locations#index" do 
    get "/" 
    expect(last_response).to be_redirect # This works, but I want it to be more specific 
    follow_redirect! 
    expect(last_request.url).to eql 'http://example.org/locations' 
end 
Cuestiones relacionadas