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