2009-06-30 16 views
88

आरएसपीईसी के साथ मेरे नियंत्रकों का परीक्षण करते समय मैं एक समस्या से फंस गया हूं - प्रतिक्रिया। कोई भी कॉल हमेशा एक खाली स्ट्रिंग देता है। ब्राउज़र में सब कुछ सही ढंग से प्रस्तुत करता है, और ककड़ी सुविधा परीक्षण सही लगता है, लेकिन आरएसपीईसी हर बार विफल रहता है।आरएसपीसी नियंत्रक परीक्षण - खाली प्रतिक्रिया। कोई

प्रतिक्रिया वस्तु पर अन्य अपेक्षाएं, जैसे response.should render_template('index') बिना किसी समस्या के पास।

क्या आप में से कोई भी इससे पहले इस समस्या का सामना कर रहा है? शायद प्रतिक्रिया एचटीएमएल किसी अन्य तरीके से प्राप्त किया जा सकता है?

संस्करणों के लिए, रेल 2.1.0, आरएसपीसी 1.2.7।

उत्तर

166

डिफ़ॉल्ट रूप से, आरएसपीसी-रेल पर रेल में हैक्स को वास्तव में दृश्य टेम्पलेट्स को प्रस्तुत करने से रोकता है। आपको केवल अपने कार्यों के व्यवहार का परीक्षण करना चाहिए & अपने नियंत्रक परीक्षणों को फ़िल्टर करता है, न कि टेम्पलेट प्रतिपादन के नतीजे - यही वह दृश्य चश्मा है। ,

describe YourController do 
    render_views 
    ... 
end 
+2

धन्यवाद, बिल्कुल मुझे जो चाहिए था। –

+1

मैं वर्षों से रेल के साथ काम कर रहा हूं और अब मैं अंततः नियंत्रक और अनुरोध चश्मा के बीच अंतर को समझता हूं। धन्यवाद! –

2

जैसा कि मैंने (है कि मुझे इस सवाल का नेतृत्व) एक ऐसी ही समस्या के साथ काम किया:

हालांकि, अगर आप करना चाहते हैं अपने नियंत्रक चश्मा टेम्पलेट्स प्रस्तुत करना के रूप में एप्लिकेशन सामान्य रूप से, render_views निर्देश का प्रयोग करेंगे यह मेरे लिए हुआ कि एक ही बिल्ली को त्वचा के विभिन्न तरीके हैं। दूसरे शब्दों में, शरीर के पाठ की जांच करने के बजाय, आप फ्लैश की सामग्री को जांचने में सक्षम हो सकते हैं।

response.body.should =~ /Invalid email or password/ 

को एक बराबर की जांच हो सकती है:

flash[:alert].should == "Invalid email or password" 

बाद में थोड़ा और अधिक लचीला यह किसी भी तरह से चला जाएगा के रूप में लगता है मेरे लिए, लेकिन यह सभी मामलों में उपयुक्त नहीं हो सकता।

चीयर्स,

जॉन

2

RSpec 2 +: आप अंत समाप्त करने के लिए जाँच करना चाहते हैं - प्रतिक्रिया शरीर के लिए यूआरएल - का प्रयोग कर एक controller spec के बजाय एक request spec

0

डिफ़ॉल्ट रूप से, RSpec-रेल विन्यास नियंत्रक चश्मा

तरीके तय करने के लिए यह आपके rails_helper.rb फ़ाइल में render_views सेटिंग को सक्षम करने के लिए सुनिश्चित बनाने के द्वारा है में से एक के लिए टेम्पलेट्स का प्रतिपादन अक्षम करता है। इस तरह, आप इसे अपने सभी परीक्षणों में विश्व स्तर पर काम करने में सक्षम बनाते हैं।

RSpec.configure do |config| 
    config.render_views 
end 

या render_views घोषणा एक व्यक्ति समूह का उपयोग करें:

describe User do 
    render_views 
end 

आप इस here के बारे में अधिक पढ़ सकते हैं।

संबंधित मुद्दे