कुछ समय पहले मैंने एक स्टैक ओवरफ्लो उत्तर पर पढ़ा था, जो मुझे नहीं मिला, एक वाक्य जिसने समझाया कि आपको सार्वजनिक एपीआई का परीक्षण करना चाहिए, और लेखक ने कहा कि आपको इंटरफेस का परीक्षण करना चाहिए। लेखक ने यह भी समझाया कि यदि एक विधि कार्यान्वयन बदल गया है, तो आपको परीक्षण मामले को संशोधित करने की आवश्यकता नहीं होनी चाहिए, क्योंकि ऐसा करने से अनुबंध टूट जाएगा जो परीक्षण कार्यों के तहत सिस्टम को सुनिश्चित करता है। दूसरे शब्दों में, एक परीक्षण विफल होना चाहिए यदि विधि काम नहीं करती है, लेकिन इसलिए नहीं कि कार्यान्वयन बदल गया।
यह मेरे ध्यान का आह्वान है जब हम मजाक के बारे में बात करते हैं। चूंकि मॉकिंग परीक्षण की निर्भरता के तहत प्रणाली से अपेक्षा कॉल पर बहुत अधिक निर्भर करता है, इसलिए मॉक को इंटरफ़ेस के बजाय कार्यान्वयन के साथ कसकर जोड़ा जाता है।
मॉक बनाम स्टब पर शोध करते समय , कई लेख इस बात से सहमत हैं कि स्टॉक्स को मॉक के बजाय इस्तेमाल किया जाना चाहिए, क्योंकि वे निर्भरता से अपेक्षाओं पर भरोसा नहीं करते हैं, जिसका अर्थ है कि परीक्षण कार्यान्वयन के तहत अंतर्निहित प्रणाली के ज्ञान की आवश्यकता नहीं है।
मेरे प्रश्न होंगे:
- क्या मोक्स खुले / बंद सिद्धांत का उल्लंघन करते हैं?
- क्या पिछले पैराग्राफ पर स्टब्स के पक्ष में तर्क में कुछ कमी है, जो स्टब्स को इतने महान बनाम मोक्स नहीं बनाते हैं?
- यदि हां, तो मॉक करने के लिए एक अच्छा उपयोग मामला कब होगा और स्टब्स का उपयोग करने के लिए एक अच्छा उपयोग मामला कब होगा?
Since mocking relays heavily on expectation calls from system under test's dependencies...
मुझे लगता है कि यह वह जगह है जहां आप जा रहे हैं। एक नकली एक बाहरी प्रणाली का कुछ कृत्रिम प्रतिनिधित्व है। यह किसी भी तरह से बाहरी प्रणाली का प्रतिनिधित्व नहीं करता है, इंफोर्स को छोड़कर, क्योंकि यह बाहरी प्रणाली को इस तरह से अनुकरण करता है कि यह कोड को बाहरी प्रणाली पर निर्भरता वाले कोड के खिलाफ परीक्षण चलाने की अनुमति देता है। आपको यह साबित करने के लिए एकीकरण परीक्षणों की आवश्यकता होगी कि आपका कोड वास्तविक, बिना सिस्टम