2013-09-04 7 views
9

मैं वर्तमान में यूनिट परीक्षण लिख रहा हूं और मोक फ्रेमवर्क का उपयोग करके निर्भरता का मज़ाक उड़ा रहा हूं। ऐसा करने में मुझे बहुत की तरह एक नकली बनाया है:ऑल्टर मॉक <IType> ऑब्जेक्ट के बाद ऑब्जेक्ट।

Mock<ITraceProvider> traceProviderMock = new Mock<ITraceProvider>(); 
traceProviderMock.Setup(x => x.GetTraceContext(It.IsAny<string>())).Returns("test"); 
ITraceProvider traceObj = traceProviderMock.Object; 

हालांकि बाद में मैं नकली थोड़ा और इसलिए मैं फिर से नकली वस्तु पर Setup फोन के व्यवहार को संशोधित करना चाहते हैं पर:

traceProviderMock.Setup(x => x.GetTracer(It.IsAny<string>())).Returns("tracer"); 

अब traceProviderMock.Object को फिर से कॉल किए बिना, क्या यह नया नकली व्यवहार traceObj में दिखाई देगा? यही वह मामला है जो मैं चाहता हूं।

यह निश्चित रूप से Verify() विधि के लिए काम करता है लेकिन Setup विधि के लिए प्रतीत नहीं होता है।

कारण मैं इसे करना चाहता हूं, इस तथ्य के कारण है कि मैंने एक मैक निर्भरता का उपयोग कर टेस्ट सेटअप विधि में पूर्ण निर्भरता ग्राफ का निर्माण किया है। मैं बस अपने विशिष्ट परीक्षण के लिए एक मॉक निर्भरताओं के व्यवहार को बदलना चाहता हूं। बाद के परीक्षण मॉक निर्भरता पर अपनी विशेषज्ञता भी लागू करेंगे।

+0

क्या आपके परीक्षण सेटअप विधि में 'GetTracer' विधि सेट अप हो गई है? –

+0

नहीं, यह एक विशिष्ट परीक्षण विधि में सेटअप है। यह मॉक के लिए परीक्षण विशिष्ट विशेषज्ञता है अगर यह समझ में आता है। –

+0

मैंने इसे एक परीक्षण दिया, और यह मेरे लिए काम किया। मैं 'traceProviderMock' से ऑब्जेक्ट प्राप्त करने के बाद' GetTracer' विधि सेट अप कर सकता था, और यह अपेक्षित मान वापस कर दिया। क्या आप सुनिश्चित हैं कि आपके दावे सही तरीके से स्थापित किए गए हैं? यदि आप पहले से नहीं हैं, तो क्या आप डीबगर में कोड के माध्यम से कदम उठा सकते हैं? –

उत्तर

14

यह व्यवहार वास्तव में काम करता है जैसा कि मैंने उम्मीद की थी। मेरे परीक्षण के साथ किसी मुद्दे के कारण, मैं वास्तव में नई मॉक विधि को कॉल नहीं कर रहा था। यह मुझे मजाक करने वाले ढांचे पर विश्वास करने के लिए गुमराह नहीं कर रहा था।

संक्षेप में, आप बाद में नकली बदल सकते हैं। ऑब्जेक्ट को बुलाया गया है और परिवर्तन मॉक ऑब्जेक्ट इंस्टेंस में दिखाई देंगे।

+0

यह सोचने के चारों ओर ठोकर खाई कि क्यों मक सही काम नहीं कर रहा था, इसे पढ़ने तक, मुझे कुछ नम्र पाई कोशिश करने की याद दिलाता था। आश्रित वस्तु की जांच की, और यह पता चला कि यह मॉक का उपयोग नहीं कर रहा था। उम्मीद के रूप में ऑब्जेक्ट ... मेरी गलती। – Sully

संबंधित मुद्दे