मैं अपेक्षाओं के कारण आम तौर पर मोक्स का उपयोग करना पसंद करता हूं। जब आप किसी स्टब पर एक विधि को कॉल करते हैं जो मान देता है, तो यह आमतौर पर आपको एक मान देता है। लेकिन जब आप किसी नकली पर एक विधि कहते हैं, न केवल यह एक मूल्य लौटाता है, यह आपके द्वारा स्थापित की गई अपेक्षा को भी लागू करता है कि विधि को पहले स्थान पर भी बुलाया गया था। दूसरे शब्दों में, यदि आप एक उम्मीद स्थापित करते हैं और फिर उस विधि को कॉल नहीं करते हैं, तो एक अपवाद फेंक दिया जाता है। जब आप एक उम्मीद निर्धारित करते हैं, तो आप अनिवार्य रूप से कह रहे हैं "अगर इस विधि को नहीं बुलाया जाता है, तो कुछ गलत हो गया।" और इसके विपरीत यह सच है, अगर आप किसी नकली पर एक विधि बुलाते हैं और उम्मीद नहीं करते हैं, तो यह एक अपवाद फेंक देगा, अनिवार्य रूप से कह रहा है "अरे, आप इस विधि को क्या कह रहे हैं जब आप इसकी अपेक्षा नहीं करते थे।"
कभी-कभी आप जिस भी विधि को बुला रहे हैं उस पर उम्मीद नहीं करना चाहते हैं, इसलिए कुछ मॉकिंग फ्रेमवर्क "आंशिक" मैक्स को मॉक/स्टब हाइब्रिड की तरह अनुमति देंगे, जिसमें केवल आपके द्वारा सेट की गई अपेक्षाएं लागू की जाती हैं, और एक दूसरे विधि कॉल को एक स्टब की तरह अधिक माना जाता है जिसमें यह केवल एक मूल्य देता है।
स्टब्स का उपयोग करने के लिए एक वैध स्थान मैं शीर्ष पर विचार कर सकता हूं, हालांकि, जब आप विरासत कोड में परीक्षण शुरू कर रहे हैं। कभी-कभी मजाक करना आसान या यहां तक कि संभव बनाने के लिए सब कुछ रिफैक्टर करने की तुलना में आप जिस क्लास का परीक्षण कर रहे हैं उसे सबक्लासिंग करके स्टब बनाना आसान है।
और इसके लिए ...
मैक्स का उपयोग हमेशा से करें क्योंकि वे परीक्षण भंगुर करते हैं। आपके परीक्षणों में अब कार्यान्वयन द्वारा बुलाए गए तरीकों का जटिल ज्ञान है, यदि मॉक इंटरफ़ेस बदलता है ... आपके परीक्षण टूट जाते हैं। तो अपने सबसे अच्छे फैसले का उपयोग करें .. <
... मैं कहता हूं कि मेरा इंटरफ़ेस बदलता है, तो मेरे परीक्षण बेहतर टूट गए थे। चूंकि यूनिट परीक्षणों का पूरा बिंदु यह है कि वे मेरे कोड का सही परीक्षण करते हैं क्योंकि यह अभी मौजूद है।
स्रोत
2008-09-07 00:16:48