सबसे पहले, कुछ परिभाषाएँ:
एक इकाई परीक्षण इकाइयों को अन्य इकाइयों से अलग करने में परीक्षण करती है, लेकिन इसका क्या अर्थ है किसी भी आधिकारिक स्रोत द्वारा समवर्ती रूप से परिभाषित नहीं किया गया है, तो आइए इसे थोड़ा बेहतर तरीके से परिभाषित करें: यदि I / O सीमाएं पार की जाती हैं (चाहे वह I / O नेटवर्क हो, डिस्क, स्क्रीन, या यूआई इनपुट), एक अर्ध-उद्देश्य स्थान है जिसे हम एक रेखा खींच सकते हैं। यदि कोड I / O पर निर्भर करता है, तो यह एक इकाई सीमा को पार कर रहा है, और इसलिए इसे I / O के लिए जिम्मेदार इकाई का मजाक बनाना होगा।
उस परिभाषा के तहत, मुझे शुद्ध कार्यों की नकल करने के लिए एक सम्मोहक कारण दिखाई नहीं देता है, जिसका अर्थ है कि इकाई परीक्षण खुद को शुद्ध कार्यों, या बिना दुष्प्रभावों के कार्यों के लिए उधार देता है।
यदि आप प्रभाव के साथ इकाइयों की जांच करना चाहते हैं, तो प्रभावों के लिए जिम्मेदार इकाइयों का मजाक उड़ाया जाना चाहिए, लेकिन शायद आपको इसके बजाय एक एकीकरण परीक्षण पर विचार करना चाहिए। तो, संक्षिप्त उत्तर है: "यदि आपको नकली की आवश्यकता है, तो अपने आप से पूछें कि क्या आपको वास्तव में ज़रूरत है एक एकीकरण परीक्षण।" लेकिन यहां एक बेहतर, लंबा जवाब है, और खरगोश छेद बहुत गहरा हो जाता है। मोक्स मेरा पसंदीदा कोड गंध हो सकता है क्योंकि उनसे सीखने के लिए बहुत कुछ है।
कोड बदबू आ रही है
इसके लिए, हम विकिपीडिया का रुख करेंगे:
कंप्यूटर प्रोग्रामिंग में, एक कोड गंध एक प्रोग्राम के स्रोत कोड में कोई विशेषता है जो संभवतः एक गहरी समस्या को इंगित करता है।
यह बाद में भी जारी है ...
"गंध कोड में कुछ संरचनाएं हैं जो मौलिक डिजाइन सिद्धांतों के उल्लंघन और डिजाइन की गुणवत्ता को नकारात्मक रूप से प्रभावित करती हैं"। सूर्यनारायण, गिरीश (नवंबर 2014)। सॉफ्टवेयर डिजाइन की बदबू आ रही है। मॉर्गन कॉफ़मैन। पी। 258।
कोड की गंध आमतौर पर कीड़े नहीं हैं; वे तकनीकी रूप से गलत नहीं हैं और कार्यक्रम को कार्य करने से नहीं रोकते हैं। इसके बजाय, वे डिजाइन में कमजोरियों को इंगित करते हैं जो विकास को धीमा कर सकते हैं या भविष्य में बग या विफलताओं के जोखिम को बढ़ा सकते हैं।
दूसरे शब्दों में, सभी कोड बदबू खराब नहीं होते हैं। इसके बजाय, वे सामान्य संकेत हैं कि कुछ अपने इष्टतम रूप में व्यक्त नहीं किया जा सकता है, और गंध प्रश्न में कोड को बेहतर बनाने का अवसर दिखा सकता है।
मॉकिंग के मामले में, गंध इंगित करता है कि जो इकाइयाँ मॉक के लिए बुला रही हैं, वे मॉक होने वाली इकाइयों पर निर्भर करती हैं । यह एक संकेत हो सकता है कि हमने समस्या को परमाणु-सॉल्व करने योग्य टुकड़ों में विघटित नहीं किया है, और यह सॉफ़्टवेयर में डिज़ाइन दोष का संकेत दे सकता है।
सभी सॉफ्टवेयर डेवलपमेंट का सार एक बड़ी समस्या को छोटे, स्वतंत्र टुकड़ों (अपघटन) में तोड़ने और समाधान को एक साथ मिलकर एक एप्लिकेशन बनाने के लिए होता है जो बड़ी समस्या (रचना) को हल करता है।
मॉकिंग की आवश्यकता तब होती है जब बड़ी समस्या को छोटे भागों में तोड़ने के लिए इस्तेमाल की जाने वाली इकाइयाँ एक दूसरे पर निर्भर होती हैं। एक और तरीका रखो, मज़ाक करने की आवश्यकता तब होती है जब हमारी रचना की परमाणु इकाइयाँ वास्तव में परमाणु नहीं होती हैं, और हमारी अपघटन रणनीति बड़ी समस्या को छोटी, स्वतंत्र समस्याओं को हल करने में विफल रही है।
एक कोड गंध का मजाक उड़ाने से क्या होता है कि नकली के साथ कुछ गलत नहीं है - कभी-कभी यह बहुत उपयोगी होता है। क्या यह एक कोड गंध बनाता है कि यह आपके आवेदन में युग्मन के एक समस्याग्रस्त स्रोत का संकेत दे सकता है। कभी-कभी युग्मन के उस स्रोत को हटाने से नकली लिखना अधिक उत्पादक होता है।
कई प्रकार के युग्मन हैं, और कुछ दूसरों की तुलना में बेहतर हैं। यह समझना कि मॉक एक कोड गंध है, जो आपको एप्लिकेशन डिजाइन जीवनचक्र में शुरुआती सबसे खराब प्रकारों को पहचानने और उनसे बचने के लिए सिखा सकती है , इससे पहले कि गंध कुछ खराब हो जाए।