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