कभी-कभी वस्तुओं को केवल कसकर युग्मित करने की आवश्यकता होती है। उदाहरण के लिए, एक CsvFile
वर्ग को संभवतः CsvRecord
कक्षा (या ICsvRecord
इंटरफ़ेस) के साथ कसकर काम करने की आवश्यकता होगी ।
हालाँकि मैंने अतीत में जो कुछ भी सीखा था, उसमें से एक परीक्षण-संचालित विकास के मुख्य सिद्धांतों में से एक है "कभी भी एक समय में एक से अधिक कक्षा का परीक्षण न करें।" मतलब आपको ICsvRecord
वास्तविक उदाहरणों के बजाय मोक्स या स्टब्स का उपयोग करना चाहिए CsvRecord
।
हालाँकि इस दृष्टिकोण को आजमाने के बाद, मैंने देखा कि CsvRecord
क्लास में नकल करने से थोड़े बाल निकल सकते हैं। जो मुझे दो निष्कर्षों में से एक की ओर ले जाता है:
- इकाई परीक्षण लिखना कठिन है! यह एक कोड गंध है! Refactor!
- हर एक निर्भरता का मजाक उड़ाना अनुचित है।
जब मैंने अपने मोक्स को वास्तविक CsvRecord
उदाहरणों से बदल दिया , तो चीजें बहुत आसानी से चली गईं। जब अन्य लोगों के विचारों की तलाश में मैं इस ब्लॉग पोस्ट पर ठोकर खाई , जो ऊपर # 2 का समर्थन करता है। उन वस्तुओं के लिए जो स्वाभाविक रूप से कसकर युग्मित हैं, हमें मॉकिंग के बारे में इतनी चिंता नहीं करनी चाहिए।
क्या मैं पटरी से उतर रहा हूँ? क्या # 2 ऊपर मानने के लिए कोई डाउनसाइड है? क्या मुझे वास्तव में अपने डिजाइन को फिर से बनाने के बारे में सोचना चाहिए?