2012-06-27 13 views
14

मेरे पास मेरे रेल ऐप परीक्षण में एक कस्टम त्रुटि पृष्ठ हैं जो 404 त्रुटि को सीधे आगे देखता है (कोई भी पृष्ठ नहीं मिलता है और कुछ टेक्स्ट के लिए assert_match/चयन करें) लेकिन मैं सोच रहा हूं कि 500 ​​त्रुटि पृष्ठ का परीक्षण कैसे करें।क्या रेल में 500 त्रुटि पृष्ठ के लिए परीक्षण लिखने का कोई तरीका है?

कोई भी विचार?

उत्तर

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

में कुछ इस तरह कर सकता है कि यहाँ मैं क्या करते हैं, आप यह सोचते हैं , और का उपयोग कर रहे हैं: पहले, आप एक खोजने की जरूरत है एक विधि कॉल करने वाले नियंत्रक कार्रवाई। उदाहरण के लिए, आपके पास हो सकता है 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 
संबंधित मुद्दे