2012-06-27 80 views

回答

12

所以,我發現了什麼是我可以做這樣的事情在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

爲了澄清,你有些控制器上的想象'other_error'方法,而不是在你的RSpec測試一個輔助方法,對嗎?我很喜歡後者的工作,但認爲這是一個夢想。 –

6

這是我做的,假設你使用: 首先,你需要找到一個調用方法的控制器操作。例如,您可能有一個UserController,其中show操作調用User.find。在這種情況下,你可以做這樣的事情:

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 
相關問題