2009-11-09 9 views
11

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

क्या मैं अगर उपयोगकर्ता कहानी की तरह कुछ है के बारे में सोच रहा हूँ (कृपया वाक्य रचना अशुद्धता बहाना, यह सिर्फ इसलिए आप समझ गए है):

एक उपयोगकर्ता में अमान्य टेलीफ़ोन नंबर में प्रवेश करती है तो वे मिल एक संदेश "अमान्य टेलीफोन नंबर"

यदि मैं इस के लिए जांच करने के लिए ककड़ी के लिए सभी कोड लिखता हूं और फिर आरएसपीईसी सामान लिखता हूं, तो मैं मूल रूप से अपने परीक्षण को डुप्लिकेट कर रहा हूं। क्या यह पता लगाने के लिए एक परिदृश्य है कि कैसे ककड़ी परीक्षण आरएसपीईसी परीक्षण से अलग होना चाहिए?

मुझे लगता है कि आप हर समय दोनों स्तरों पर परीक्षण डुप्लिकेट करेंगे।

यदि इस पर कोई निश्चित उत्तर नहीं है, तो मुझे लगता है कि ककड़ी लोग बस आरएसपीसी लोगों के पैर की उंगलियों पर कदम नहीं उठाना चाहते हैं।

कृपया मदद करें। मुझे लगता है कि मेरा सिर विस्फोट करने वाला है।

धन्यवाद!

उत्तर

12

ककड़ी समझाने के बजाय इकाई परीक्षण या व्यवहार परीक्षण से आवेदन (जो RSpec का ध्यान केंद्रित है) का एक हिस्सा (कहानी) का (एक वर्णन करना) करने के लिए प्रयोग किया जाता है

तो, IMHO ककड़ी परीक्षण (कथाएँ) आरएसपीसी परीक्षण के लिए विकल्प नहीं है।

आरएसपीसी परीक्षण मॉडल और नियंत्रकों के विकास को प्रेरित करते हैं, और कहानियां विचारों के विकास को प्रेरित करती हैं।

अपने विवरण से है जैसे आप कहानियों और व्यवहार

+0

मैं पूरी तरह सहमत, यह मेरा अनुभव के रूप में अच्छी तरह से किया गया है। –

2

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

आरएसपीईसी सामान वास्तव में व्यवहार के छोटे टुकड़ों को संबोधित करने और सब कुछ बहुत अलग बनाने का इरादा रखता है। यदि आप इकाई परीक्षण से परिचित हैं और इसके लिए ढांचे को और अधिक समझना चाहिए।

ककड़ी उपयोगिता सिस्टम पर उच्च स्तरीय कार्रवाइयों के एक सेट में उच्च स्तरीय विवरणों का अनुवाद करने में सक्षम है।

5

रुपयेपेक और ककड़ी स्वतंत्र हैं और आप अपने परीक्षणों (टेस्ट यूनिट, कंधे इत्यादि) के लिए ककड़ी और अन्य परीक्षण ढांचे का उपयोग कर सकते हैं।

बिंदु यह है कि आप ककड़ी के साथ परीक्षण करना चाहते हैं? क्योंकि वास्तव में आप डुप्लिकेटिंग परीक्षण समाप्त कर सकते हैं और यह वास्तव में उपयोगी नहीं होगा? :)

ककड़ी के साथ विभिन्न दर्शन हैं।

ककड़ी के साथ आप कर सकते हैं:

डीएमए

नकली browzer (का उपयोग पूरे MVC ढेर (प्रत्यक्ष मॉडल पहुंच जिसका अर्थ है, हाँ, आप पूरी तरह से अपने मॉडल की तरह आप rspec में करना होगा परीक्षण कर सकते हैं) , कोई जावास्क्रिप्ट)

स्वचालित ब्राउज़र (उपयोग webrat और सेलेनियम जावास्क्रिप्ट, धीमी, असली browzer)

के साथ अपने विचारों का उपयोग करने की,

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

फिर मैं नियंत्रकों और मॉडलों में लिखने वाले किसी भी कोड का परीक्षण करने के लिए rspec का उपयोग करता हूं।

अपने मामले में

इस प्रकार,

एक उपयोगकर्ता में अमान्य टेलीफ़ोन नंबर में प्रवेश करती है तो वे संदेश "अमान्य टेलीफोन नंबर" मिल

मुझे लगता है कि उपयोगकर्ता मिलता है की जाँच करने के Webrat का प्रयोग करेंगे दृश्य में अमान्य टेलीफोन नंबर संदेश। मैं अपने नियंत्रक कार्रवाई और मॉडल का परीक्षण करने के लिए रुपेक का उपयोग करूंगा।

13

यह BDDCasts.com पर स्क्रीनकास्ट देखने के लिए उपयोग किया जा सकता है। वे आपको ऐप के लिए कहानियां और चश्मे बनाने के माध्यम से चलते हैं। यह वास्तव में मेरी मदद की। आरएसपीसी बुक भी है, लेकिन अभी भी उलझन में था। आप यहां तक ​​कि गीथूब पर अपना स्रोत देखना चाहते हैं।

मेरे लिए यह इस प्रकार है: परीक्षण करने के लिए

  • ककड़ी क्या उपयोगकर्ता देखेंगे। (पूर्ण ढेर परीक्षण)

  • अन्य सभी का परीक्षण करने के लिए रुपेक। (मॉडल, नियंत्रक)

0

यह लेख आपको कुछ परिप्रेक्ष्य दे सकता है: में बाहर, जहां RSpec विशिष्ट मॉड्यूल की इकाई परीक्षण है से, अपने पूरे आवेदन के परीक्षण के रूप में ककड़ी की When to repeat yourself in tests - and when not to

6

Think। आप यह निर्धारित करके शुरू करते हैं कि आप अपने आवेदन को ककड़ी में क्या चाहते हैं, फिर आरएसपीईसी में उतरें और कक्षाओं और मॉड्यूल का वर्णन करें जो उस व्यवहार को काम करते हैं।

मुझे इसे पाने के लिए थोड़ी देर लग गई है, लेकिन मुझे लगता है कि ककड़ी वास्तव में व्यापक रूप से वर्णन करने के लिए अच्छी है कि आप अपने आवेदन को क्या करना चाहते हैं और आरएसपीईसी वास्तव में यह कैसे करना चाहिए यह वर्णन करने में वास्तव में अच्छा है।

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

मान लें कि आपकी सुविधा वेबसाइट पर उपयोगकर्ता नामों की खोज करने की क्षमता है।आप एक ककड़ी सुविधा और पहली (और केवल पहले) इस तरह के परिदृश्य में लिख सकते हैं:

Feature: Search users 
    In order to find people with similar interests as myself 
    As a user 
    I want to search for people 

Scenario: Search for similar hobbies 
    Given there is a search page 
    And there is a list of hobbies 
    And one of the hobbies is "full contact ironing" 
    When I select "full contact ironing" 
    And press search 
    Then a list of users with the hobby "full contact ironing" are shown 

आप ककड़ी चलाने के लिए, यह आप चरणों से वंचित हो रहे बताता है, तो आप उन कॉपी और जांच करने के लिए सरल कदम बनाने इस सामान के लिए अभी तक कोई कोड नहीं लिखें।

आप अपने कदम परिभाषा के साथ काम हो गया जब आप RSpec में ड्रॉप डाउन और आप कैसे यह काम करना चाहता हूँ पर विनिर्देशों लेखन शुरू। (बेशक ककड़ी में नाकाम रहने की जानी चाहिए)

describe "SearchController" do 

    it "should respond to searches" do 
    sc = SearchController.new 
    sc.should respond_to(:search) 
    end 

end 

आप RSpec चलाने के लिए और घड़ी यह असफल तो दूर जाकर अपने कोड लिखने:

class SearchController 

    def search 
    end 

end 

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

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

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

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

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

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