स्विफ्ट मॉकी का उपयोग कर आईओएस यूनिट टेस्ट मॉकिंग

Nov 28 2022
स्विफ्ट को सुरक्षित होने के लिए डिज़ाइन किया गया था - रीड-ओनली रिफ्लेक्शन का समर्थन करता है। इस प्रकार, रनटाइम पर आपके प्रोग्राम को संशोधित करने का कोई तरीका नहीं है।

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

परीक्षण योग्य कोड लिखने के लिए इस भाषा को अपने सुपरहीरो की जरूरत है, और हम उन्हें अच्छी तरह जानते हैं - प्रोटोकॉल और एक्सटेंशन! कोई फर्क नहीं पड़ता कि यह कार्यान्वयन क्या है - क्लास, एनम, या स्ट्रक्चर - प्रोटोकॉल का उद्देश्य बनी हुई है - एब्सट्रैक्शन को परिभाषित करना और प्रकारों में नई कार्यक्षमता जोड़ना, यहां तक ​​​​कि उन पर भी जिनका हम पर कोई एहसान नहीं है।

हम उपहास करने के लिए क्या कर सकते हैं?

पूर्ण नकली कार्यान्वयन उत्पन्न करने के लिए मेटा-प्रोग्रामिंग का उपयोग करें।

वे कई पुस्तकालय हैं जो इकाई परीक्षण के लिए नकली काम कर रहे हैं, अधिकांश चिनार कोयल और स्विफमॉकी हैं ।

इस लेख में, मैं इस बारे में जानकारी दूंगा कि हम SwiftyMocky का उपयोग करके कैसे मॉकिंग कर सकते हैं।

स्विफ्टीमॉकी

https://github.com/MakeAWishFoundation/SwiftyMocky

लाभ

  • स्वचालित रूप से स्विफ्ट प्रोटोकॉल का मज़ाक उड़ाएँ
  • जेनरिक का समर्थन करें
  • सीधा सेटअप और हल्का
  • अच्छा दस्तावेज
  • अच्छा और आसान सिंटैक्स (जो स्वत: पूर्ण का उपयोग करता है)
  • मजाक उड़ाए जाने वाले प्रोटोकॉल को चिह्नित करें
  • इस एनोटेशन वाले स्रोत निर्देशिकाओं में प्रत्येक प्रोटोकॉल को Mock.generated.swift में जोड़ा जाएगा
  • सभी मॉक ने विधि दी है (इंस्टेंस विधि या वैश्विक फ़ंक्शन दोनों के रूप में सुलभ), सिंटैक्स का उपयोग करना आसान है, यह निर्दिष्ट करने की अनुमति देता है कि दिए गए तरीकों के लिए वापसी मूल्य क्या होना चाहिए (निर्दिष्ट विशेषताओं के आधार पर)
  • सभी मॉक में सत्यापन विधि है (इंस्टेंस विधि या वैश्विक फ़ंक्शन दोनों के रूप में सुलभ), सिंटैक्स का उपयोग करना आसान है, यह सत्यापित करने की अनुमति देता है कि क्या मॉक पर एक विधि को कॉल किया गया था, और कितनी बार। यह निर्दिष्ट करने के लिए सुविधाजनक तरीका भी प्रदान करता है कि क्या विधि गुण मायने रखता है (और कौन सा)
  • सभी मॉक में प्रदर्शन विधि है (इंस्टेंस विधि या वैश्विक फ़ंक्शन दोनों के रूप में सुलभ), सिंटैक्स का उपयोग करने में आसान, क्लोजर निर्दिष्ट करने की इजाजत देता है, जिसे स्टब्ड विधि बुलाए जाने पर निष्पादित किया जाएगा

स्थापित करना

  • Cocoapods का उपयोग करके इंस्टॉल करें
  • आसान मॉक जनरेशन के लिए इंस्टाल सीएलआई

> Swiftymocky डॉक्टर # अपना सेटअप मान्य करें

> स्विफ्टिमॉकी जेनरेट # मॉक जेनरेट करें

  • नकली पीढ़ी Mockfile.yml फ़ाइल पर आधारित है जिसमें बहिष्कृत स्विफ्टलिंट नियमों का उपयोग करके स्विफ्ट लिंट नियमों को बाहर करने की संभावना है

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

जाने-माने अंकल बॉब उनका यथासंभव उपयोग नहीं करते हैं; वह कहता है: "जिस बिंदु पर आपको नकली ढांचे की आवश्यकता होती है वह वह बिंदु है जिस पर आपके परीक्षणों और कोड के बीच युग्मन बहुत अधिक हो रहा है। उसके बाद, हालांकि, आपको अपने कोड और परीक्षणों के बीच युग्मन को इतना कम रखने का प्रयास करना चाहिए कि आपको नकली ढांचे का अक्सर उपयोग करने की आवश्यकता न हो।

पढ़ने के लिए धन्यवाद! अगर आपको यह लेख पसंद आया हो तो कृपया ताली बजाएं ताकि अन्य लोग भी इसे पढ़ सकें :)

हैप्पी कोडिंग :v: