आज हम आपके ध्यान में लाएंगे, रूबी के भक्त, जो कि रूबी हीरो अवार्ड के 2009 के विजेता हैं, एक प्रसिद्ध डेवलपर पैट एलन द्वारा पोस्ट का अनुवाद है। यह कैसा इनाम है? यह उन सामुदायिक सदस्यों को पिछले वर्ष के विजेताओं द्वारा प्रदान किया जाता है, जिन्होंने खुद को सबसे अधिक साबित किया है: अर्थपूर्ण शिक्षण सामग्री, विकसित प्लगइन्स और रत्न, ओपन सोर्स प्रोजेक्ट्स में भाग लिया। यह पुरस्कार सबसे अधिक स्व-स्पष्ट लोगों का जश्न मनाने और उन्हें वह मान्यता देने के लिए बनाया गया था जिसके वे हकदार थे।
आप इस साल 5-6 नवंबर को कीव में रूबीसी सम्मेलन में पेट के साथ बातचीत कर सकते हैं।मैंने अपने पहले रेल इंजन को लिखने में पिछले महीने का एक महत्वपूर्ण हिस्सा खर्च किया - फिर भी, मैंने इसे खत्म नहीं किया, और काम खुद क्लाइंट के लिए था, इसलिए मैं विवरण पर ध्यान नहीं दे सकता।
विकास प्रक्रिया के दौरान, यह जल्दी से स्पष्ट हो गया कि रेल इंजन का परीक्षण करने के लिए एक तरीका आवश्यक था। सबसे सरल इकाई परीक्षणों को ध्यान में नहीं रखते हुए, एकीकरण परीक्षण के लिए एक काफी सामान्य अभ्यास यह है कि
spec या
test निर्देशिका के अंदर रेल पर आवेदन की एक प्रति संग्रहीत करें।
यह दृष्टिकोण मुझे कठिन और अविश्वसनीय लगा, इसलिए मैंने कुछ और करने की कोशिश की।
लक्ष्य को एक सरल और समझने योग्य तरीके से व्यापक परीक्षण का आयोजन करना था: मेरी खुद की निर्देशिका निर्देशिका के अंदर परीक्षण लिखना, बजाय उन्हें उस विशेष निर्देशिका में पैक करना, जो कि परीक्षण किए जा रहे रेल एप्लिकेशन के बगल में है। इसके अलावा,
Capybara DSL उपयोग करना
Capybara DSL होगा।
बेशक, एक वास्तविक रेल एप्लिकेशन की आवश्यकता थी, जिसके आधार पर परीक्षण किया जाएगा, लेकिन जैसा कि यह निकला, रेल द्वारा उत्पन्न एप्लिकेशन की अधिकांश फाइलें समाप्त हो सकती हैं। वास्तव में, रेल की जरूरत है कि केवल फ़ाइल
config/database.yml - और केवल अगर आपको ActiveRecord का उपयोग करने की आवश्यकता है।
दहन के लिए आपका स्वागत है, मेरे न्यूनतम इंजन परीक्षण अनुप्रयोग पुस्तकालय, एक ठेठ रेल आवेदन के लिए सभी चूक के साथ।
अनुकूलन योग्य हैं
एक विशिष्ट सेटअप / स्थापना इस प्रकार है:
- अपने
Gemfile में रत्न जोड़ें (और bundle कमांड चलाएं - लगभग।); - रेल एप्लिकेशन को ठूंठ करने के लिए अपने रेल इंजन की निर्देशिका में जनरेटर चलाएं: यदि आप मणि फ़ाइल में जीआईटी रिपॉजिटरी का उपयोग करते हैं तो
combust (या bundle exec combust ); - Comb
Combustion.initialize! spec/spec_helper.rb (अभी तक केवल RSpec का समर्थन किया जाता है, लेकिन यदि TestUnit लिए आवश्यक है, तो पैच के साथ कोई समस्या नहीं होनी चाहिए)।
यहाँ एक विशिष्ट
spec_helper.rb दिया गया है,
Capybara :
require 'rubygems' require 'bundler' Bundler.require :default, :development require 'capybara/rspec' Combustion.initialize! require 'rspec/rails' require 'capybara/rails' RSpec.configure do |config| config.use_transactional_fixtures = true end
सबकुछ बनाने का काम
सबसे पहले, आपको यह सुनिश्चित करने की आवश्यकता है कि आप रेल एप्लिकेशन के अंदर रेल इंजन का उपयोग कर रहे हैं। जनरेटर को आवश्यक हुक जोड़ना था, जिसे हमें इसके लिए बस आवश्यकता है। यदि आपको मार्गों को जोड़ने की आवश्यकता है, तो
spec/internal/config/routes.rb मार्गों को संपादित करें। यदि आपको मॉडल की आवश्यकता है, तो उन्हें
spec/internal/db/schema.rb जोड़ना सुनिश्चित करें।
README में सब कुछ थोड़ा और अधिक विस्तार से वर्णित है।
सब कुछ, परीक्षण शुरू करने का समय है! यहाँ एक छोटा सा उदाहरण है:
या एक एकीकरण परीक्षण के लिए
Capybara का उपयोग करना:
कुंजी को चालू करें
अरे हाँ, और यहाँ मेरे पसंदीदा सहायकों में से एक है:
Combustion जनरेटर अपने इंजन के लिए
config.ru फ़ाइल जोड़ता है, जिसका अर्थ है निम्नलिखित: आप एक ब्राउज़र में अपना परीक्षण एप्लिकेशन चला सकते हैं - बस
rackup और पते पर जाएं
localhost:9292 localhost:9292 ।
कुछ आरक्षण
जैसा कि पहले ही उल्लेख किया गया है,
Combustion RSpec के लिए बनाया
Combustion , लेकिन मैं ख़ुशी से
TestUnit लिए पैच स्वीकार
TestUnit । वही
Cucumber पर लागू होता है, और सिद्धांत रूप में यह काम करना चाहिए, लेकिन मैंने इसका परीक्षण नहीं किया है।
इसके अलावा, मणि रेल 3.1 के लिए लिखी गई है - इसे कई पैच के बाद रेल्स 3.0 के साथ काम करना चाहिए, लेकिन मुझे दृढ़ता से संदेह है कि यह 3.0 तक कुछ के साथ काम करेगा। हालांकि, बेझिझक तलाश करें।
इस बात की भी संभावना है कि लाइब्रेरियों के एकीकरण परीक्षण के लिए मणि काम में आएगी जो इंजन नहीं हैं। यदि आप इसकी जांच करना चाहते हैं, तो मुझे यह पूछने में खुशी होगी कि प्रक्रिया कैसे चल रही है।
निष्कर्ष
अच्छा, चलो देखते हैं कि हमें कहाँ लाया गया है।
- आप न्यूनतम आवश्यक रेल एप्लिकेशन पर अपने इंजन का परीक्षण कर सकते हैं;
- अपने रेल आवेदन में आप केवल वही जोड़ें जो आपको परीक्षण के लिए चाहिए;
- आपका परीक्षण कोड बहुत साफ है (हाय DRY!) और बनाए रखने में आसान;
- आप उनके लिए मानक सहायकों का उपयोग कर सकते हैं। एकीकरण परीक्षण के लिए
RSpec और Capybara ; Rack के लिए धन्यवाद, आप अपने परीक्षण आवेदन को देख सकते हैं।
मैं एक समान विचार के साथ आने वाला पहला व्यक्ति नहीं था - जब मैंने दहन पर काम करना समाप्त किया, तो उन्होंने मुझे
कामनारी के लिए एक परीक्षण खोल की ओर इशारा किया, जो एक ही कार्य करता है (यह सिर्फ एक अलग पुस्तकालय में नहीं डाला गया था)। मुझे आश्चर्य नहीं होगा अगर किसी और ने भी ऐसा किया हो - लेकिन जब मैंने समान लोगों की तलाश की, तो मैं लगातार उन प्रसिद्ध पुस्तकालयों पर ठोकर खाई, जो उनके परीक्षण या विशेष निर्देशिका के अंदर रेल पर पूर्ण आवेदन के साथ आए थे।
यदि यह आपको लगता है कि दहन आपके इंजन को सजा सकता है, तो कोशिश करें - बग ढूंढना और विश्वास जोड़ना कि कार्यों की एक विस्तृत श्रृंखला पर मणि का स्वागत है। पैच और समीक्षाओं का बिना सोचे समझे स्वागत किया जाता है।