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