2011-11-29 17 views
25

मैं बीडीडी में डाइविंग शुरू करना चाहता हूं। मैंने पहले कभी टीडीडी का उपयोग नहीं किया है और सुनिश्चित नहीं है कि मुझे आरएसपीईसी सीखकर शुरू करना चाहिए और फिर ककड़ी पर जाएं या सीधे ककड़ी का उपयोग करने के लिए सीधे जाएं।ककड़ी बनाम आरएसपीसी

मैं दोनों के बारे में इंटरनेट पर पढ़ रहा हूं और ऐसा लगता है कि ककड़ी आरएसपीसी के लिए 'प्रतिस्थापन' हो सकती है। क्या मैं सही हूं या होना चाहिए जो कुछ चीजों के लिए इस्तेमाल किया जाता है और दूसरा दूसरों के लिए?

+0

http://stackoverflow.com/questions/393622/rspec-vs-cucumber-rspec-stories –

उत्तर

7

हाँ, ककड़ी और आरएसपीईसी दोनों बीडीडी के लिए उपयोग किए जाते हैं।

मैं व्यक्तिगत रूप से ककड़ी पसंद करता हूं, लेकिन कुछ लोगों को यह ऑफपूटिंग मिलती है, और को उनके परीक्षण कम अंग्रेजी, अधिक कोड पसंद करते हैं। हालांकि, दोनों महान उपकरण हैं।

70

ककड़ी और आरएसपीसी दोनों बीडीडी के लिए उपयोग किए जाते हैं लेकिन अलग-अलग उपयोग होते हैं।

वेब ब्राउज़र के साथ बातचीत के माध्यम से, उपयोगकर्ता के परिप्रेक्ष्य से क्या होता है, यह वर्णन करते हुए ककड़ी के बारे में सोचें। तो अगर आप की तरह चरणों हो सकता है:

Given I'm not logged in 
When I login 
Then I should be on the user dashboard page 

सुंदर व्यापक है, लेकिन वहाँ एक बहुत वहाँ हुड के नीचे चल रहा है। ककड़ी यह सुनिश्चित करने के लिए अच्छा है कि इन सभी प्रकार की उच्च स्तरीय विशेषताओं और कार्यक्षमता को कवर किया गया है (उदाहरण के लिए, जब आपका उपयोगकर्ता लॉग इन करता है, तो उन्हें सही पृष्ठ पर ले जाया जाता है)। लेकिन यह निम्न-स्तर कोड का परीक्षण करने के लिए एक अच्छा उपकरण नहीं है। यही वह जगह है जहां आरएसपीसी आता है।

उपरोक्त लॉगिन उदाहरण लें। आपका उपयोगकर्ता किसी ईमेल पते या उपयोगकर्ता नाम से लॉग इन कर रहा है। आप शायद यह सुनिश्चित करना चाहते हैं कि ईमेल पता मान्य है या उपयोगकर्ता नाम एक निश्चित लंबाई है ... या वह चीज़ जो वे लॉगिन करने के लिए उपयोग कर रहे हैं वह अद्वितीय है। आप इसे अपने उपयोगकर्ता मॉडल में सत्यापन के साथ करेंगे।

यह एक मामूली उदाहरण है, लेकिन यह ऐसी चीज है जिसे आप आरएसपीईसी (अपने spec/models/user_spec.rb फ़ाइल में) का उपयोग करके परीक्षण करेंगे। यह कुछ है जिसे आप ककड़ी का उपयोग करके परीक्षण करेंगे।

तो लब्बोलुआब यह है:

कैसे अपनी कक्षाओं, विधियों, मॉडल, नियंत्रक के लिए वर्णन करने वाली निचले स्तर के परीक्षण के लिए उपयोगकर्ता के नजरिए

RSpec से देखा के रूप में व्यापक कार्यक्षमता का वर्णन उच्च स्तर के परीक्षण के लिए ककड़ी , आदि वास्तव में काम करना चाहिए।

इस पोस्ट में वास्तव में समझा जब एक उपकरण से दूसरे में संक्रमण के लिए की एक बहुत अच्छा काम करता है:

http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/

मैं यह भी अनुशंसा "The RSpec Book" और दोनों उपकरण और परीक्षण पर अच्छा संसाधनों के लिए "Rails Test Prescriptions" सामान्य रूप में।

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

+0

लेख के लिंक के लिए +1, कि बहुत जरूरी-पढ़ने के लिए है। –

3

केंटन ने इस उत्तर के साथ एक महान काम किया।यहाँ कैसे RSpec और ककड़ी के लेखकों ऐसा देखें:

हम ककड़ी का उपयोग अनुप्रयोगों के व्यवहार का वर्णन और वस्तुओं की व्यवहार का वर्णन करने RSpec उपयोग करने के लिए।

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