दहन - रेल इंजनों के परीक्षण के लिए एक वैकल्पिक दृष्टिकोण

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

आप इस साल 5-6 नवंबर को कीव में रूबीसी सम्मेलन में पेट के साथ बातचीत कर सकते हैं।

मैंने अपने पहले रेल इंजन को लिखने में पिछले महीने का एक महत्वपूर्ण हिस्सा खर्च किया - फिर भी, मैंने इसे खत्म नहीं किया, और काम खुद क्लाइंट के लिए था, इसलिए मैं विवरण पर ध्यान नहीं दे सकता।

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

यह दृष्टिकोण मुझे कठिन और अविश्वसनीय लगा, इसलिए मैंने कुछ और करने की कोशिश की।

लक्ष्य को एक सरल और समझने योग्य तरीके से व्यापक परीक्षण का आयोजन करना था: मेरी खुद की निर्देशिका निर्देशिका के अंदर परीक्षण लिखना, बजाय उन्हें उस विशेष निर्देशिका में पैक करना, जो कि परीक्षण किए जा रहे रेल एप्लिकेशन के बगल में है। इसके अलावा, Capybara DSL उपयोग करना Capybara DSL होगा।

बेशक, एक वास्तविक रेल एप्लिकेशन की आवश्यकता थी, जिसके आधार पर परीक्षण किया जाएगा, लेकिन जैसा कि यह निकला, रेल द्वारा उत्पन्न एप्लिकेशन की अधिकांश फाइलें समाप्त हो सकती हैं। वास्तव में, रेल की जरूरत है कि केवल फ़ाइल config/database.yml - और केवल अगर आपको ActiveRecord का उपयोग करने की आवश्यकता है।

दहन के लिए आपका स्वागत है, मेरे न्यूनतम इंजन परीक्षण अनुप्रयोग पुस्तकालय, एक ठेठ रेल आवेदन के लिए सभी चूक के साथ।

अनुकूलन योग्य हैं

एक विशिष्ट सेटअप / स्थापना इस प्रकार है:
यहाँ एक विशिष्ट 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 में सब कुछ थोड़ा और अधिक विस्तार से वर्णित है।

सब कुछ, परीक्षण शुरू करने का समय है! यहाँ एक छोटा सा उदाहरण है:
 # spec/controllers/users_controller_spec.rb require 'spec_helper' describe UsersController do describe '#new' do it "runs successfully" do get :new response.should be_success end end end 

या एक एकीकरण परीक्षण के लिए Capybara का उपयोग करना:
 # spec/acceptance/visitors_can_sign_up_spec.rb require 'spec_helper' describe 'authentication process' do it 'allows a visitor to sign up' do visit '/' click_link 'Sign Up' fill_in 'Name', :with => 'Pat Allan' fill_in 'Email', :with => 'pat@no-spam-please.com' fill_in 'Password', :with => 'chunkybacon' click_button 'Sign Up' page.should have_content('Sign Out') end end 

कुंजी को चालू करें

अरे हाँ, और यहाँ मेरे पसंदीदा सहायकों में से एक है: Combustion जनरेटर अपने इंजन के लिए config.ru फ़ाइल जोड़ता है, जिसका अर्थ है निम्नलिखित: आप एक ब्राउज़र में अपना परीक्षण एप्लिकेशन चला सकते हैं - बस rackup और पते पर जाएं localhost:9292 localhost:9292

कुछ आरक्षण

जैसा कि पहले ही उल्लेख किया गया है, Combustion RSpec के लिए बनाया Combustion , लेकिन मैं ख़ुशी से TestUnit लिए पैच स्वीकार TestUnit । वही Cucumber पर लागू होता है, और सिद्धांत रूप में यह काम करना चाहिए, लेकिन मैंने इसका परीक्षण नहीं किया है।

इसके अलावा, मणि रेल 3.1 के लिए लिखी गई है - इसे कई पैच के बाद रेल्स 3.0 के साथ काम करना चाहिए, लेकिन मुझे दृढ़ता से संदेह है कि यह 3.0 तक कुछ के साथ काम करेगा। हालांकि, बेझिझक तलाश करें।

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

निष्कर्ष

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

यदि यह आपको लगता है कि दहन आपके इंजन को सजा सकता है, तो कोशिश करें - बग ढूंढना और विश्वास जोड़ना कि कार्यों की एक विस्तृत श्रृंखला पर मणि का स्वागत है। पैच और समीक्षाओं का बिना सोचे समझे स्वागत किया जाता है।

Source: https://habr.com/ru/post/In128794/


All Articles