2012-07-12 4 views
9

मैं एक कार्रवाई में कोड निम्नलिखित है:रेंडर का परीक्षण कैसे करें: file => 'public/404.html' Rspec 2 में?

render :file => 'public/404.html' and return 

यह ब्राउज़र में ठीक काम करता है। मैं इस परीक्षण करने के लिए निम्नलिखित rspec उदाहरण लिखा है:

it "renders 404" do 
    get :new 
    response.should render_template('public/404.html') 
    end 

निम्न त्रुटि में इस उदाहरण परिणाम चल रहा है:

Failure/Error: response.should render_template('public/404.html') 
    Expected block to return true value. 

मैं भी कोशिश की है response.should render_template(:file => 'public/404.html') लेकिन वह भी एक त्रुटि में परिणाम है।

मुझे इसका परीक्षण कैसे करना चाहिए?

उत्तर

17

आप का उपयोग करना चाहिए: इस जवाब पर एक नजर है

response.should render_template(:file => "#{Rails.root}/public/404.html") 
+6

यह काम नहीं करता है: render_template (: file => "bogus फ़ाइल") गुजरता है। – therin

+0

मेरे लिए आरएसपीसी 3.2, रेल 4.2 काम करता है – fny

5

यदि आप 404 पेज दिखाना चाहते हैं, तो स्थिति कोड सेट करना याद रखें। यह भी है कि मैं परीक्षण करता हूं: it { should respond_with :not_found }

जनता/404 को सीधे प्रस्तुत करने के बजाय, ऐसा करने के बेहतर तरीके हैं। How to redirect to a 404 in Rails?

+0

क्या होगा अगर यह किसी भी अन्य पेज है और 404.html नहीं (या 502.html) विशेष रूप से? उदाहरण के लिए, कुछ पैरामीटर के आधार पर, मैं अलग-अलग उपयोगकर्ताओं को अलग-अलग लैंडिंग पृष्ठ दिखाना चाहता हूं। – Chandranshu

+0

मैं इसे राउटर में रखूंगा और इसके लिए रूटिंग परीक्षण लिखूंगा। – phoet