2012-06-27 40 views

Trả lời

12

Vì vậy, những gì tôi phát hiện ra là tôi có thể làm điều gì đó như thế này trong 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

Để làm rõ, bạn đang tưởng tượng một 'phương pháp other_error' trên một số điều khiển, không phải là một phương pháp helper trong thử nghiệm rspec của bạn, phải không? Tôi muốn người thứ hai làm việc, nhưng nghĩ đó là một giấc mơ. –

6

Dưới đây là những gì tôi làm, giả sử bạn đang sử dụng , : Trước tiên, bạn cần phải tìm một hành động điều khiển gọi một phương thức. Ví dụ: bạn có thể có một số UserController với hành động show gọi User.find. Trong trường hợp đó, bạn có thể làm một cái gì đó như thế này:

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 
Các vấn đề liên quan