मैं वर्तमान में यूनिट परीक्षण लिख रहा हूं और मोक फ्रेमवर्क का उपयोग करके निर्भरता का मज़ाक उड़ा रहा हूं। ऐसा करने में मुझे बहुत की तरह एक नकली बनाया है:ऑल्टर मॉक <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
विधि के लिए प्रतीत नहीं होता है।
कारण मैं इसे करना चाहता हूं, इस तथ्य के कारण है कि मैंने एक मैक निर्भरता का उपयोग कर टेस्ट सेटअप विधि में पूर्ण निर्भरता ग्राफ का निर्माण किया है। मैं बस अपने विशिष्ट परीक्षण के लिए एक मॉक निर्भरताओं के व्यवहार को बदलना चाहता हूं। बाद के परीक्षण मॉक निर्भरता पर अपनी विशेषज्ञता भी लागू करेंगे।
क्या आपके परीक्षण सेटअप विधि में 'GetTracer' विधि सेट अप हो गई है? –
नहीं, यह एक विशिष्ट परीक्षण विधि में सेटअप है। यह मॉक के लिए परीक्षण विशिष्ट विशेषज्ञता है अगर यह समझ में आता है। –
मैंने इसे एक परीक्षण दिया, और यह मेरे लिए काम किया। मैं 'traceProviderMock' से ऑब्जेक्ट प्राप्त करने के बाद' GetTracer' विधि सेट अप कर सकता था, और यह अपेक्षित मान वापस कर दिया। क्या आप सुनिश्चित हैं कि आपके दावे सही तरीके से स्थापित किए गए हैं? यदि आप पहले से नहीं हैं, तो क्या आप डीबगर में कोड के माध्यम से कदम उठा सकते हैं? –