मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां बहुत से बाहरी सेवा संदेश हैं। केवल थोड़ी "हाइपरबोलस" तरीके में इसका वर्णन करने का एक अच्छा तरीका एक ऐसा एप्लीकेशन होगा जहां सिस्टम को फ़्लिकर एपीआई, फेसबुक एपीआई और नेटफ्लिक्स एपीआई को संदेश भेजना होगा।परीक्षण के बाहर नकली वस्तुओं का उपयोग, बुरा अभ्यास?
कट परिदृश्यों, लॉगिंग चिंताओं, डेवलपर प्रयोज्य, विन्यास, आदि का समर्थन करने के ... मैं एक दृष्टिकोण जो काफी हद तक जेनरिक और अभिव्यक्ति के पेड़ का उपयोग करता है का उपयोग कर प्रयोग किया गया है। अंतिम परिणाम इस प्रकार है:
Messenger<NetflixApi>.SendCustom(netflix => netflix.RecommendMovie("my message"));
कुल मिलाकर मैं अंतिम परिणाम के साथ खुश हूँ, लेकिन लगता है कि मैं एक गलती की है, या परीक्षण और डिस्कनेक्ट परिदृश्यों के संबंध में एक डिजाइन प्रिंसिपल किसी ऐसे स्थान पर अनदेखी की।
परीक्षण के दौरान, चाहे स्वचालित, इकाई या मानव आधारित, मैंने एक ऑब्जेक्ट फैक्ट्री लागू की है जो प्रारंभ में "लाइव मोड" में सही कार्रवाई करने के लिए DI का उपयोग करती है और एक प्रकार का बाँझ मैसेंजर प्रदान करने के लिए मैक्स का उपयोग करती है जो ' एक परीक्षण मोड में जब भी कुछ भी नहीं करते हैं।
Mocks के बारे में मैं केवल देखा या पढ़ा है शुद्ध TDD मोड में इस्तेमाल किया जा रहा है और एक तरह से एक गूंगा वस्तु होने के लिए नहीं इस्तेमाल किया जा रहा। मैंने जो दृष्टिकोण देखा है, वह HTTP संचार कार्यक्षमता को छेड़छाड़ या मजाक कर घूमता है, जिसका उपयोग मैं कर रहे सभी एपीआई पर निर्भर करता हूं।
मेरी मुख्य चिंता यह है कि मैं उन सभी अलग-अलग सेवाओं को जोड़ूंगा जिनसे मैं कनेक्ट होने की उम्मीद करता हूं, मैं विशिष्ट HTTP कार्यान्वयन को प्रतिस्थापित करने के लिए बहुत सारे दानेदार काम करने के लिए समाप्त होता हूं और यदि मैंने स्टब दृष्टिकोण का उपयोग किया तो मेरे पास 3 कक्षाएं होंगी इन सेवाओं में से प्रत्येक (IService, ConcreteService, StubService) और किसी नई विधि को लागू करने या किसी भी चीज़ को बदलने पर बनाए रखने से वास्तविक पिटा होगा।
वर्तमान कार्यान्वयन में मैं "कुछ बाँझ मोड" प्राप्त करने के लिए मोक्स का उपयोग कर रहा हूं, बिना किसी निश्चित परीक्षण प्रिंसिपल के अनुरूप कुछ अतिरिक्त लागू किए बिना।
सवाल मैं कुछ याद आ रही है है? क्या मैंने मोक्स का उपयोग करके एक डिजाइन प्रिंसिपल का अधिक उपयोग किया ... सुविधाजनक तरीका?
किसी को भी कैसे हुप्स का एक बहुत माध्यम से कूद के बिना कई अलग अलग बाहर सेवाओं के बाहर एक बाँझ मोड पाने के लिए पर कोई सलाह दे सकते हैं?
क्या यह प्रश्न समझ में आता है?
सभी उत्तरों के लिए धन्यवाद।
# 1 संपादित करें:
मैं अपने मूल प्रश्न में स्पष्ट नहीं था। किसी भी शून्य या नकली वस्तुओं का उपयोग पूरी तरह से विकास/डीबग/परीक्षण वातावरण में किया जाना चाहिए। उत्पादन में जो कोड इन संदेशों को भेजता है उनका वास्तविक कार्यान्वयन होगा।
मैंने सभी को वोट दिया क्योंकि इस समस्या के बहुत से समाधान हैं और मैं प्रत्येक की खोज करूँगा।
कृपया नहीं लगता कि इस सवाल का जवाब अभी तक कर दिया गया है, मैं के रूप में ज्यादा सलाह की सराहना करेंगे, के रूप में मैं प्राप्त कर सकते हैं।
दूसरी बार मैंने इस धागे का विषय लाल "नल ऑब्जेक्ट" अलर्ट देखा ... – abyx