Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

मिनिटेस्ट कैसे काम करता है इसका एक त्वरित विश्लेषण

मिनिटेस्ट क्या है?

Minitest एक रूबी टेस्टिंग लाइब्रेरी है , यह आपको अपने कोड TDD शैली के लिए परीक्षण लिखने की अनुमति देता है।

यह रेल और डीएचएच के पसंदीदा के लिए डिफ़ॉल्ट परीक्षण ढांचा है।

कुछ लोग इसे इसकी सादगी के लिए पसंद करते हैं और इसके मुख्य विकल्प (आरएसपीसी) की तुलना में इसका कोड कितना कम है।

जैसा कि आप इस चित्र में देख सकते हैं :

मिनिटेस्ट कैसे काम करता है इसका एक त्वरित विश्लेषण

अब यह पोस्ट इस बारे में नहीं है कि आपको किसे चुनना चाहिए या कौन सा 'बेहतर' है।

यह पोस्ट इस बारे में है कि मिनीटेस्ट कैसे काम करता है

<ब्लॉकक्वॉट>

यदि आप सोच रहे हैं:जो भी आपको सबसे अच्छा लगे उसका उपयोग करें, लेकिन फिर भी आपको दोनों से परिचित होना चाहिए 🙂

अगर आप यह जानना चाहते हैं कि चीजें कैसे काम करती हैं तो आपको यह पोस्ट पसंद आएगी…

कोई फर्क नहीं पड़ता कि कौन सी परीक्षण लाइब्रेरी आपकी पसंदीदा है!

चलो हुड के नीचे एक नज़र डालते हैं

लोगों द्वारा सुझाई गई चीजों में से एक (मेरे सहित) स्रोत कोड पढ़ना है क्योंकि यह सीखने का एक शानदार तरीका है कि चीजें कैसे काम करती हैं और यह कुछ नए रूबी ट्रिक्स को चुनने का एक शानदार तरीका है जो आपने पहले नहीं देखे होंगे।

मैंने मिनिटेस्ट के साथ यही किया है और मैंने जो सीखा है उसे आपके साथ साझा करने जा रहा हूं।

आइए कुछ वास्तविक परीक्षण कोड के साथ शुरू करें ताकि हम चर्चा कर सकें कि यह मिनिटेस्ट कैसे काम करता है से संबंधित है।

class Thingy < Minitest::Test
  def test_it_works
    assert_equal 1, 1
  end
end

तो Minitest इन परीक्षण विधियों को कैसे खोजता है (जैसे test_it_works ) और उन्हें चलाएं?

इसका उत्तर थोड़ा सा मेटाप्रोग्रामिंग 'मैजिक' है:

def self.methods_matching(re)
  public_instance_methods(true).grep(re).map(&:to_s)
end

यह Runnable . से आता है क्लास जिसे lib/minitest.rb . में परिभाषित किया गया है . यह कोड वर्तमान वर्ग के लिए सभी इंस्टेंस विधियों को ढूंढता है और नियमित अभिव्यक्ति से मेल खाने वाले लोगों का चयन करता है।

तो अगर आप methods_matching(/^test_/) . को कॉल करते हैं आपको सभी विधि नामों के साथ एक सरणी मिलेगी जो test_ . से शुरू होती है ।

मिनीटेस्ट कैसे काम करता है

Minitest इन test_ को ढूंढता है विधियों, तो यह उन्हें कहते हैं।

यह lib/minitest/test.rb में होता है फ़ाइल (और अधिक विशिष्ट होने के लिए, runnable_methods . पर विधि, जो यादृच्छिक क्रम में विधियों की सूची भी लौटाती है)।

महत्वपूर्ण बिंदु :
यह काम करता है क्योंकि Minitest::Test Runnable . का उपवर्ग है ।

पहेली का अंतिम भाग है run Runnable . पर वर्ग विधि , जो कुछ अतिरिक्त फ़िल्टरिंग करता है और फिर run_one_method . को कॉल करता है हर विधि के नाम और एक रिपोर्टर ऑब्जेक्ट के साथ।

यह रहा कोड :

filtered_methods.each do |method_name|
  run_one_method self, method_name, reporter
end

और यह run . को कॉल करना समाप्त करता है इंस्टेंस विधि Minitest::Test . पर :

capture_exceptions do
  before_setup; setup; after_setup

  self.send self.name
end

भेजें एक मेटाप्रोग्रामिंग विधि है जो आपको स्ट्रिंग या प्रतीक का उपयोग करके किसी भी ऑब्जेक्ट पर दूसरी विधि को कॉल करने देती है।

capture_exceptions आपके कोड द्वारा उठाए गए परीक्षण विफलताओं और अपवादों को रिकॉर्ड करने के लिए ब्लॉक का उपयोग किया जाता है।

def capture_exceptions # :nodoc:
  yield
rescue *PASSTHROUGH_EXCEPTIONS
  raise
rescue Assertion => e
  self.failures << e
rescue Exception => e
  self.failures << UnexpectedError.new(e)
end

मैं इस तरह से कोड पढ़ना पसंद करता हूं, जो कोड आप पढ़ रहे हैं उसके एक पहलू या विशेषता पर ध्यान केंद्रित करें और फिर प्याज की तरह परतों को छीलते रहें।

यदि आप नहीं जानते कि इसका क्या अर्थ है, जैसे यह उपज कीवर्ड, तो इसे देखें।

यह सीखने की प्रक्रिया का हिस्सा है!

निष्कर्ष

इस पोस्ट में आपने सीखा कि कैसे Minitest आपके परीक्षण के तरीकों को खोजने और उन्हें कॉल करने के लिए मेटाप्रोग्रामिंग का उपयोग करता है। आपने यह भी सीखा कि रिपोर्टिंग के लिए परीक्षण त्रुटियों और अपवादों को एक सरणी में कैसे कैप्चर किया जाता है।

क्या आपको इस तरह के "कोड विश्लेषण" लेख पसंद हैं?

मुझे टिप्पणियों में बताएं 🙂

साथ ही इसे अपने पसंदीदा सामाजिक नेटवर्क पर साझा करना न भूलें और नीचे मेरे न्यूज़लेटर की सदस्यता लें यदि आप पहले से ही 7000+ रूबी डेवलपर्स का हिस्सा नहीं हैं जो अपने कौशल में सुधार करना चाहते हैं!


  1. मदरबोर्ड कैसे काम करता है

    आपने शायद मदरबोर्ड के बारे में सुना है और जानते हैं कि एक क्या है, लेकिन क्या आप वास्तव में जानते हैं कि यह कैसे काम करता है? एक मदरबोर्ड को एक बड़ी कंपनी के मुख्यालय के रूप में सोचें। मुख्यालय के बिना, शेष कर्मचारियों को कार्य सौंपने वाला कौन है? और ठीक यही मदरबोर्ड के लिए है। यह कंप्यूटर का केंद्

  1. रूबी में स्थैतिक विश्लेषण

    मान लें कि आप अपने सभी तरीकों को खोजने के लिए अपने स्रोत कोड को पार्स करना चाहते हैं, जहां वे परिभाषित हैं और वे कौन से तर्क लेते हैं। आप यह कैसे कर सकते हैं? आपका पहला विचार इसके लिए एक रेगेक्सपी लिखना हो सकता है... लेकिन क्या कोई बेहतर तरीका है? हाँ! स्थिर विश्लेषण एक ऐसी तकनीक है जिसका उपय

  1. एक्सेल में डेटा विश्लेषण कैसे जोड़ें (2 त्वरित चरणों के साथ)

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