2012-06-27 8 views

Respuesta

12

Así que lo que descubrí fue que yo podría hacer algo como esto en rspec

def other_error 
    raise "ouch!" 
end 

it "renders 500 on Runtime error" do 
    get :other_error 
    response.should render_template("errors/500") 
    response.status.should == 500 
end 
+0

Para aclarar, que estás imaginando un método 'other_error' en algún controlador, no como un método de ayuda en su prueba rspec, ¿verdad? Me encantaría que este último trabajara, pero creo que es un sueño. –

6

Esto es lo que hago, asumiendo que usted está utilizando , y : En primer lugar, es necesario encontrar una acción del controlador que llama a un método. Por ejemplo, puede tener un UserController con una acción show que llame al User.find. En ese caso, se puede hacer algo como esto:

it "should render the 500 error page when an error happens" do 
    # simulate an error in the user page 
    User.should_receive(:find).and_raise("some fancy error") 
    visit '/user/1' 

    # verify status code 
    page.status_code.should eql(500) 

    # verify layout 
    page.title.should eql('Your site title') 
    page.should have_css('navigation') 
    page.should have_css('.errors') 
end 
Cuestiones relacionadas