2013-05-08 10 views
5

मैंने देखा है कि इस तरह के bundler के रूप में परियोजनाओं प्रत्येक spec filerspec .rspec फ़ाइल में spec_helper की आवश्यकता होती है

मैं भी देखा है कि rspec विकल्प --require है, जो आप एक फाइल जब rspec की आवश्यकता के लिए अनुमति देता है लेता है में एक require spec_helper करना बूटस्ट्रैप है आप इसे .rspec फ़ाइल में भी जोड़ सकते हैं, इसलिए जब भी आप कोई तर्क के साथ rspec चलाते हैं तो इसे जोड़ा जाता है।

क्या उपर्युक्त विधि का उपयोग करने के लिए कोई नुकसान है जो बता सकता है कि बंडलर जैसी परियोजनाओं को प्रत्येक spec फ़ाइल में spec_helper की आवश्यकता क्यों है?

उत्तर

5

मैं बंडलर पर काम नहीं करता इसलिए मैं उनके अभ्यासों के बारे में सीधे बात नहीं कर सकता। सभी परियोजनाएं .rspec फ़ाइल में चेक-इन नहीं करती हैं। कारण यह फ़ाइल है, आमतौर पर वर्तमान सम्मेलन द्वारा, केवल सामान्य आउटपुट/धावक प्राथमिकताओं के लिए व्यक्तिगत कॉन्फ़िगरेशन विकल्प होते हैं। इसलिए यदि आपको केवल spec_helper की आवश्यकता है, तो अन्य इसे लोड नहीं करेंगे, जिससे परीक्षण विफल हो जाएंगे।

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

हकीकत में, यदि आपके सभी परीक्षणों को spec_helper की आवश्यकता है और आपने इस परियोजना पर एक स्पष्ट सम्मेलन किया है तो कोई तकनीकी कारण नहीं है जिसे आप नहीं कर सकते या नहीं करना चाहिए। यह परियोजना में शामिल होने वाले नए लोगों के लिए एक प्रारंभिक आश्चर्य हो सकता है।

3

उचित सेटअप के साथ, कोई नकारात्मकता नहीं है।

.rspec फ़ाइल प्रोजेक्ट से संबंधित है (और किसी भी अन्य प्रोजेक्ट स्रोत फ़ाइल की तरह काम किया जाना चाहिए)।

इस बीच, .rspec-local वैयक्तिकृत सेटिंग्स के साथ ओवरराइड करने के लिए है (और यह उपयोगकर्ता को कुछ विकल्पों को ओवरराइड करने देगा)।

(देखें: https://www.relishapp.com/rspec/rspec-core/v/3-2/docs/configuration/read-command-line-configuration-options-from-files)

रेल परियोजनाओं भी रेल-विशिष्ट RSpec सेटिंग्स के लिए एक अलग --require rails_helper का उपयोग करें।

.rspec और --require दोनों विकल्प 2011 से कम से कम (जो पहले हो चुके हैं) मौजूद हैं।

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

परीक्षण वातावरण भी है, तो आप नहीं है एक सुसंगत विन्यास होना आवश्यक है स्थापित करने के लिए लोगों को spec_helper फ़ाइल या .rspec फ़ाइल (उसी कारण से) tweaking करना चाहते हैं।

संक्षेप में: यदि यह प्रोजेक्ट में प्रत्येक spec पर लागू नहीं होता है, तो यह spec_helper फ़ाइल में नहीं होना चाहिए।यही कारण है कि आप सुनिश्चित करें कि प्रत्येक spec फ़ाइल द्वारा शामिल है। और .rspec फ़ाइल ऐसा करने का सबसे अच्छा तरीका है।

को यह करने के लिए स्विच करने के लिए न केवल कारण जब परियोजना सक्रिय रूप से कई लोगों को (और किसी भी परियोजना विस्तृत परिवर्तन सिर्फ लोगों से संबंधित कोई कारण के लिए अपने काम rebase करने के लिए मजबूर जैसे द्वारा खीज पैदा करता है द्वारा बनाए रखा जा रहा है कि वे क्या कर रहा है पर काम कर रहे थे)।

बंडलर इस श्रेणी में फिट बैठता है - कई लोगों को संभावित रूप से एक साथ काम करने के लिए।

पीएस मैं एक खाली परियोजना पर rspec --init का उपयोग करने और जेनरेट की गई कॉन्फ़िगरेशन की जांच करने की भी अनुशंसा करता हूं।

+0

मेरा मानना ​​है कि आप वास्तव में वहां से प्रलेखित दस्तावेज से अधिक अर्थ निकाल रहे हैं। यह केवल उस ऑर्डर के बारे में बात करता है जिसमें तीन .rspec फ़ाइलों को लोड किया जाता है, इरादा उद्देश्य नहीं (प्रोजेक्ट कॉन्फ़िगरेशन बनाम स्थानीय कॉन्फ़िगरेशन बनाम स्थानीय कॉन्फ़िगरेशन) या यह संस्करण नियंत्रित होना चाहिए या नहीं। आम तौर पर, डॉट फाइलों को किसी प्रोजेक्ट के घटकों के लिए आवश्यक नहीं माना जाता है और केवल व्यक्तिगत कॉन्फ़िगरेशन के लिए उपयोग किया जाना चाहिए। एक डॉट फ़ाइल बनाकर साझा/आवश्यक घटक बनें, आप कम से कम आश्चर्य के सिद्धांत का उल्लंघन कर रहे हैं। मैं यहां स्वीकृत उत्तर से सहमत हूं। –

+0

@JavidJamae - कृपया कोष्ठक में विवरण सावधानी से पढ़ें। साथ ही, शब्दों का उपयोग मैंने उल्लेख किया है: "प्रोजेक्ट", "स्थानीय" और "ग्लोबल"। सुझावों को भी ध्यान दें - वास्तव में * सुझाव देता है * '.rspec' फ़ाइल में चेकिंग (चयनित उत्तर के विपरीत)। –

+0

बस मामले में, मैंने लिंक को आरएसपीईसी 3.2 डॉक्स से स्पष्ट रूप से लिंक करने के लिए अपडेट किया है (जो मुझे डिफ़ॉल्ट रूप से मिलता है)। –