मैं एक साधारण, अगर idiosyncractic, बाहरी सेवा से कनेक्ट कर रहा हूँ।बाहरी सेवाओं का मज़ाक उड़ाकर यूनिट परीक्षणों में सुधार कैसे हो सकता है?
मेरा मानना है कि मेरे यूनिट परीक्षण उस बाहरी सेवा की उपलब्धता या कार्यान्वयन पर निर्भर नहीं होना चाहिए, इसलिए मैं इसे मजाक करना चाहता हूं।
मुझे यथार्थवादी संदेशों और प्रतिक्रियाओं को स्वीकार करने और वापस करने के लिए नकली की आवश्यकता है - अन्यथा मेरे परीक्षण वास्तविक मामलों के प्रतिनिधित्व नहीं करेंगे। उदाहरण के लिए, इसे सही प्रकार की त्रुटियों को फेंकना पड़ता है - और कम से कम 7 अलग-अलग तरीके विफल हो सकते हैं (आपके और मेरे बीच यह एक बहुत ही अच्छी तरह से डिज़ाइन की गई बाहरी सेवा नहीं है)। इसलिए, कम से कम मुझे संदेश/प्रतिक्रिया जोड़े का हैश होना चाहिए।
तो आकस्मिकता को कम करने के बजाय, मॉकिंग ने इसे कहीं और फिर से पेश किया है। वास्तव में, जैसा कह रहा है, अब मुझे दो समस्याएं मिली हैं: मुझे यह सुनिश्चित करना होगा कि मेरे हैश में क्या है बाहरी सेवा कैसे व्यवहार करती है इसका एक उचित प्रतिनिधित्व है। लेकिन निश्चित रूप से प्रतिक्रिया ऑब्जेक्ट एक्स का कैननिकल स्रोत संदेश एम संदेश को देता है। कुछ और जोखिम भरा और गन्दा है।
क्या मैंने गलत मोड़ लिया है? मैं इस स्पष्ट परिपत्र को कैसे खत्म कर सकता हूं?
EDIT मैंने स्पष्ट किया है कि मुझे लगता है कि समस्या न्याय की सहायक टिप्पणियों के प्रकाश में क्या है।
आह हाँ, यह है, धन्यवाद।जोखिम और रखरखाव दूर नहीं जा रहा है, तथ्य के सरल गुण से यह एक _external_ सेवा है! लेकिन अपने व्यवहार की मेरी अपेक्षाओं को व्यक्त करके, मैं अनिश्चितता को अलग करता हूं। –
'मेरे दो उत्तरों पर एक और प्रश्न' का लिंक टूटा हुआ है। क्या कोई यह कह सकता है कि यह अब कहाँ रहता है? –
यह काम करना चाहिए। http://stackoverflow.com/questions/513778/what-do-you-think-of-junit-style-unit-testing-do-you-favor-behaviour-driven-tes/513807#513807 –