2012-08-03 6 views
5

मैं रेल के लिए काफी नया हूं और चीजों को लागू करने से परीक्षणों को लागू करके "सही" तरीके से करने की कोशिश कर रहा हूं। कल मैंने अपना पहला मॉडल/व्यू/कंट्रोलर कॉन्फ़िगरेशन बनाने के लिए मचान जनरेटर का उपयोग किया था। जबकि मुझे बताया गया है कि आपको वास्तव में मचान का उपयोग नहीं करना चाहिए, यह उपयोगी था ताकि मैं सीख सकूं कि रेल कोड कैसे संरचित किया जाता है।रेल के साथ आरएसपीईसी परीक्षण लिखते समय, spec/अनुरोध फ़ोल्डर बनाम spec/नियंत्रकों में क्या जाना चाहिए?

एक बात मैंने देखा है कि स्वचालित रूप से उत्पन्न RSpec ज्यादातर कल्पना/नियंत्रक फ़ोल्डर में रखा गया था। लेकिन जब मैं this episode of Railscasts देखा, मैंने देखा कि वह

rails generate integration_test [test_name] 

आदेश जो कल्पना में एक भी परीक्षण फ़ाइल रखा इस्तेमाल किया/फ़ोल्डर अनुरोध करता है। हालांकि उनके सभी परीक्षणों ने लिखा कि उन्होंने नियंत्रकों के साथ बातचीत की। जो मैं निर्धारित करने की कोशिश कर रहा हूं वह इन परीक्षणों को स्टोर करने के लिए सबसे अच्छा अभ्यास है।

किसी को spec/request फ़ोल्डर में परीक्षण कब करना चाहिए और किसी को spec/नियंत्रक फ़ोल्डर में परीक्षण कब करना चाहिए? किसी भी प्रतिक्रिया की काफी सराहना की जाएगी!

उत्तर

6

असल में वे 2 प्रकार के परीक्षण हैं। नियंत्रक फ़ोल्डर में आपको नियंत्रक क्रियाओं का परीक्षण करने के लिए परीक्षण बनाना चाहिए, अनुरोध फ़ोल्डर में आपको विचारों के साथ बातचीत करने के लिए परीक्षण करना चाहिए, जो वास्तव में आपके सभी एप्लिकेशन भागों का परीक्षण करेगा, और यही कारण है कि इसे एकीकरण परीक्षण नाम दिया गया है।

यहां उन दो प्रकार के परीक्षणों के बारे में कुछ लेख दिए गए हैं।

http://everydayrails.com/2012/04/07/testing-series-rspec-controllers.html

http://everydayrails.com/2012/04/24/testing-series-rspec-requests.html

0

नियंत्रक चश्मा एक एकल नियंत्रक कार्रवाई के आह्वान का परीक्षण करें। आम तौर पर आप विचार प्रस्तुत नहीं करेंगे (हालांकि आप इसे चालू कर सकते हैं), यह बहुत सारे मॉडल कोड को बाहर निकालना भी आम है। परीक्षण के तहत कोड के साथ आपके पास एकमात्र बातचीत एक एकल नियंत्रक कार्रवाई का आह्वान करना है। आप इन्हें नियंत्रकों के लिए यूनिट परीक्षण के रूप में सोच सकते हैं।

दूसरी तरफ अनुरोध चश्मा पूरे ढेर (रूटिंग, नियंत्रक, विचार, मॉडल इत्यादि) का परीक्षण करें। केवल एक नियंत्रक कार्रवाई का आह्वान करने के बजाय आप उपयोगकर्ता द्वारा किए जाने वाले कार्यों के करीब कार्रवाई करते हैं: किसी पृष्ठ पर जाएं, एक फॉर्म भरें, एक बटन पर क्लिक करें। अक्सर यह कई क्रियाओं/नियंत्रकों का विस्तार करेगा। उदाहरण के लिए आप एक अनुरोध spec लिख सकते हैं जो उपयोगकर्ता को एक कार्ट में उत्पाद जोड़ने की प्रक्रिया के माध्यम से ले जाता है और फिर चेक आउट करने में शामिल विभिन्न चरणों के माध्यम से जाता है।

आप आमतौर पर कैपिबारा का उपयोग करते हैं (मुझे लगता है कि आप अभी भी वेब्रैट का उपयोग कर सकते हैं) जो आपके द्वारा जेनरेट किए गए पृष्ठों से बातचीत करते हैं। पृष्ठ पर एक उपयुक्त कैपिबरा ड्राइवर जावास्क्रिप्ट के साथ भी निष्पादित किया जाएगा, उदाहरण के लिए, आप परीक्षण कर सकते हैं कि आपके क्लाइंट साइड जावास्क्रिप्ट आपके नियंत्रक द्वारा उत्पादित जेसन के साथ सही काम करता है (हालांकि आप जावास्क्रिप्ट चश्मे लिखने पर विचार करना चाहेंगे यदि आपके पास है उसमें से बहुत कुछ)

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