Ecco quello che faccio, supponendo che stai usando rspec, rspec-mocks e capybara: In primo luogo, è necessario trovare un azione del controllore che chiama un metodo. Ad esempio, potresti avere un UserController
con un'azione show
che chiama User.find
. In questo caso, si può fare qualcosa di simile:
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
Per chiarire, si sta immaginando un metodo 'other_error' su alcuni controller, ma non come un metodo di supporto nel test RSpec, giusto? Mi piacerebbe che quest'ultimo funzionasse, ma penso che sia un sogno. –