describe
, context
, feature
, scenario
: अंतर (रों) चार के बीच में क्या है और मैं हर एक का उपयोग करते हैं?
describe
, context
, feature
, scenario
: अंतर (रों) चार के बीच में क्या है और मैं हर एक का उपयोग करते हैं?
जवाबों:
के context
लिए एक उपनाम है describe
, इसलिए वे कार्यात्मक रूप से समतुल्य हैं। आप उनका उपयोग परस्पर विनिमय के लिए कर सकते हैं, केवल अंतर यह है कि आपकी कल्पना फ़ाइल कैसे पढ़ती है। उदाहरण के लिए परीक्षण आउटपुट में कोई अंतर नहीं है। RSpec पुस्तक कहती है:
"हम
describe()
चीजों औरcontext()
संदर्भ के लिए उपयोग करते हैं "।
व्यक्तिगत रूप से मैं उपयोग describe
करना पसंद करता हूं, लेकिन मैं देख सकता हूं कि लोग क्यों पसंद करते हैं context
।
feature
और scenario
Capybara का एक हिस्सा हैं, और RSpec नहीं है, और स्वीकृति परीक्षणों के लिए उपयोग किया जाता है। / के feature
बराबर है , और / के बराबर है ।describe
context
scenario
it
example
Capybara साथ आप कर रहे हैं लेखन स्वीकृति परीक्षण का उपयोग करते हैं feature
/ scenario
वाक्य रचना, अगर प्रयोग नहीं describe
/ it
वाक्य रचना।
आज सुबह, कुछ चश्मा लिखते समय, मैं एक ही सवाल कर रहा था। आमतौर पर, मैं मुख्य रूप से उपयोग करता हूं describe
और इस बारे में विशेष रूप से नहीं सोचता हूं, लेकिन आज सुबह मैं एक मॉड्यूल के लिए बहुत सारे मामलों और विभिन्न चश्मे के साथ काम कर रहा था, इसलिए इसे अगले डेवलपर के लिए आसानी से समझा जा सकता था जो उन चश्मे को पढ़ेंगे। इसलिए मैंने Google से इस बारे में पूछा, और मुझे यह मिला: वर्णन बनाम rspec में , जिसका उत्तर मुझे काफी रोचक लगा:
Rspec स्रोत कोड के अनुसार, "संदर्भ" केवल "वर्णन" का एक अन्य तरीका है, जिसका अर्थ है कि इन दो तरीकों के बीच कोई कार्यात्मक अंतर नहीं है। हालाँकि, एक प्रासंगिक अंतर है जो इन दोनों का उपयोग करके आपके परीक्षणों को अधिक समझने में मदद करेगा।
"वर्णन" का उद्देश्य एक कार्यक्षमता के खिलाफ परीक्षणों का एक सेट लपेटना है, जबकि "संदर्भ" एक ही राज्य के तहत एक कार्यक्षमता के खिलाफ परीक्षणों का एक सेट लपेटना है।
इसलिए, इस सिद्धांत पर भरोसा करते हुए, आप इस तरह एक कल्पना लिखेंगे:
#
# The feature/behaviour I'm currently testing
#
describe "item ordering" do
# 1st state of the feature/behaviour I'm testing
context "without a order param" do
...
end
# 2nd state of the feature/behaviour I'm testing
context "with a given order column" do
..
end
# Last state of the feature/behaviour I'm testing
context "with a given order column + reverse" do
..
end
end
यकीन नहीं होता कि यह आम तौर पर स्वीकृत नियम है, लेकिन मुझे यह दृष्टिकोण स्पष्ट और समझ में आसान है।
डॉक्स के अनुसार पियरे के उत्कृष्ट उत्तर पर विस्तार :
फीचर और परिदृश्य डीएसएल क्रमशः वर्णन और इसे करने के लिए अनुरूप है। ये विधियां केवल उपनाम हैं जो सुविधा चश्मा को ग्राहक और स्वीकृति परीक्षणों के रूप में अधिक पढ़ने की अनुमति देती हैं।
इसलिए मोचा से परिचित लोगों के लिए यह वर्णन करता है और यह (जो उपयोगकर्ता के दृष्टिकोण से परीक्षण के व्यवहार का वर्णन करने के लिए बेहतर अनुकूल है, इसलिए मोचा मुख्य रूप से फ्रंट एंड टेस्टिंग फ्रेमवर्क के रूप में कार्य कर रहा है), आप कर सकते हैं:
describe
और it
या एक और बाँधना चुनेंit
एक context
ब्लॉक के अंदर उपयोग करने का चयन करें जिसके लिए एक विशिष्ट ऐप राज्य में कई अभिकथन / परीक्षण की आवश्यकता होती हैदूसरे विकल्प के साथ, आप अभी भी "... रैप [पिंग] एक ही राज्य के तहत एक कार्यक्षमता के खिलाफ परीक्षणों का एक सेट" के इरादे का पालन कर सकते हैं।
इस प्रकार आपके परीक्षण इस तरह दिख सकते हैं:
#
# The feature/behaviour I'm currently testing
#
describe "item ordering" do
# 1st state of the feature/behaviour I'm testing
context "without an order param" do
# 1st and only test we want to run in this state
it "asks the user for missing order param" do
...
end
end
# 2nd state of the feature/behaviour I'm testing
context "with an invalid order param" do
# 1st test we want to run in this state
it "validates and rejects order param" do
...
end
# 2nd test we want to run in this state
it "returns an error to user" do
...
end
end
# 3rd state of the feature/behaviour I'm testing with multiple tests
context "with a valid order param" do
it "validates and accepts order param" do
...
end
it "displays correct price for order" do
...
end
unless being_audited
it "secretly charges higher price to user" do
...
end
end
end
end
इस तरह आप feature
कीवर्ड को पूरी तरह से छोड़ देते हैं , जिसे आप विशिष्ट फ्रंट एंड फीचर्स के लिए उपयोग करना चाहते हैं या यदि आप FDD (सुविधा संचालित विकास) कर रहे हैं, जो कुछ के लिए असहज महसूस कर सकता है। इनपुट के लिए अपनी डेवलपर टीम से यहां पूछें।
कैविएट: हमेशा उद्योग के मानकों का पालन नहीं करते हैं, कल्पना करें कि क्या हम वोक्सवैगन दर्शन के बाद अपने सभी परीक्षणों को मॉडल करते हैं?