2011-01-05 11 views
7

मैंने थोड़ी देर के लिए कंधे का उपयोग किया है, और मैंने पढ़ा है और rspec के साथ खेला है। मैंने गहराई से तुलना और विपरीत में कोई काम नहीं किया है। लेकिन ऐसा लगता है कि दोनों के बीच कुछ ओवरलैप है, लेकिन वे 1-1 प्रतिस्थापन नहीं हैं।आरएसपीईसी और कंधे - पूरक या विकल्प?

मैं अपने रेल सिस्टम में आरएसपीईसी के साथ कुछ यूनिट परीक्षण लिखने पर विचार कर रहा हूं, कंधे से लिखे गए सभी मौजूदा परीक्षणों को बदले बिना। महसूस करने के लिए एक तरह के रूप में।

क्या यह एक अच्छा विचार है? क्या मैं धीरे-धीरे एक से दूसरे में जा सकता हूं या क्या मैं परेशानी के लिए पूछ रहा हूं?

किसी अन्य पर एक के स्पष्ट कट लाभ मुझे विचार करना चाहिए?

धन्यवाद!

उत्तर

12

मुझे क्रिस के जवाब के खिलाफ बहस करना है कि वे विकल्प हैं। मैं अपने रेल अनुप्रयोग में एक साथ कंधे और रुपेक का उपयोग करता हूं, और वे एक दूसरे के पूरक हैं।

यह कॉम्बो मुझे एसोसिएशन और सत्यापन जैसे पुनरावर्ती चीजों के साथ-साथ अधिक जटिल चश्मा के लिए पूर्ण आरएसपीसी सूट के लिए संक्षिप्त एक-पंक्ति इकाई परीक्षण लिखने की अनुमति देता है। आप बिना किसी संघर्ष के दोनों दुनिया के सर्वश्रेष्ठ प्राप्त करते हैं।

Shoulda README देखें जो दिखाता है कि रुपेक के साथ कैसे स्थापित करें। यह भी कहता है कि यह "टेस्ट :: यूनिट- और आरएसपीसी-संगत एक-लाइनर प्रदान करता है जो सामान्य रेल कार्यक्षमता का परीक्षण करते हैं। ये परीक्षण अन्यथा अधिक जटिल, अधिक जटिल और त्रुटि-प्रवण होंगे।"

संपादित करें (उदाहरण):

मेरी ऐनक के शीर्ष पर, मैं हमेशा अपने क्लास संबंध और सत्यापन परीक्षण जो संक्षिप्त और पढ़ने में आसान हों घोषणा करते हैं।

describe Component do 

    context 'relationships' do 
    it { should belong_to(:technology)} 
    it { should have_many(:system_components) } 
    it { should have_and_belong_to_many(:variables) } 
    it { should have_many(:images).dependent(:destroy) } 
    it { should have_many(:documents).dependent(:destroy) } 
    end 

    context 'validations' do 
    it { should validate_presence_of(:make) } 
    it { should validate_presence_of(:model) } 
    it { should ensure_length_of(:name).is_at_most(100) } 
    it { should validate_presence_of(:technology_id) } 
    end 
end 

तब मेरे कल्पना के बाकी अधिक जटिल परीक्षण है जहाँ मैं मजाक उड़ाता है और स्टब्स जो Rspec से आते हैं का उपयोग कर रहा होगा।

+0

यहां कुछ और दृष्टिकोण हैं: http://stackoverflow.com/questions/3604564/rspec-vs-shoulda –

+0

मुझे कॉम्बो के साथ किए गए कार्यों के कुछ उदाहरण पसंद हैं जो एक के साथ नहीं किया जा सका या दूसरा। यदि तरीके हैं तो मैं अपने परीक्षणों को साफ कर सकता हूं, मैं इसके लिए सब कुछ कर रहा हूं। मैं एक साथ कंधे + मैच का उपयोग कर रहा था, फिर पाया कि आरएसपीईसी ने मूल रूप से ऐसा किया और वहां से चला गया। क्या यह केवल नियंत्रक matchers की तरह चीजें हैं? –

+0

मैंने अपने उत्तर को कुछ कंधे परीक्षणों के साथ अपडेट किया है। एक नियम जो मैं पालन करता हूं वह यह है कि कंधे का प्रयोग क्लास मैक्रोज़ में मान्यताओं और रिश्तों जैसे रेलों के लिए किया जाता है, और रुपेक अधिक जटिल परीक्षणों के लिए होता है जहां नकली वस्तुओं और विधि स्टबिंग की आवश्यकता होती है। –

0

rspec और कंधे एक-दूसरे के विकल्प हैं। मैंने कंधे से भी शुरुआत की, और आरएसपीईसी में जाने के लिए s/context/describe/, s/should/it/ जितना सरल है, और आप दौड़ में हैं। आरएसपीईसी में चाल, विभिन्न एकीकरण, और अधिक जटिल मैचर्स का एक गुच्छा है, इसलिए मैं इन दिनों अपने आप का उपयोग कर रहा हूं।

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

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