माइक्रोसॉफ्ट टेस्ट फ्रेमवर्क और एमओक का उपयोग करके मैं यह सत्यापित करने की कोशिश कर रहा हूं कि लॉग 4नेट विधि कहलाती है या नहीं।moq सेट अप करना और सत्यापित करना कि विधि को
[TestMethod()]
public void Log_Info_When_Stuff_Is_Done()
{
SampleClass sampleObject = new SampleClass();
Mock<log4net.ILog> logMockObject = new Mock<log4net.ILog>();
sampleObject.Log = logMockObject.Object;
sampleObject.DoStuffAndLogInfo();
logMockObject.Verify(moqLog => moqLog.Info("do stuff got called"), Times.AtLeastOnce());
}
मुझे लगता है कि
नकली को अपेक्षित मंगलाचरण में कम से कम एक बार कह कॉल सत्यापित करें पर एक अपवाद मिलता है, लेकिन कभी नहीं प्रदर्शन किया गया था: moqLog => moqLog.Info ("कर सामान लिए बुला लिया गया") कोई सेटअप कॉन्फ़िगर नहीं किया गया। कोई चालान प्रदर्शन नहीं किया।
मैं क्या गलत कर रहा हूं?
अद्यतन समस्या SampleClas.Log प्रॉपर्टी के लिए गेटर के साथ थी। मैं हमेशा LogManager.GetLogger(...);
लौटा रहा था, भले ही संपत्ति पहले से ही ILogProxy पर सेट हो। मैं इस धारणा के तहत था कि संपत्ति के एक्सेसर को कॉल नहीं किया जाएगा क्योंकि मैंने sampleObject.Log = logMockObject.Object;
"सामान लिए बुला लिया गया है" है सटीक स्ट्रिंग .info को पारित किया जा रहा? –
'sampleObject.DoStuffAndLogInfo()' क्या करता है? –
नहीं। क्या पैरामीटर मायने रखता है? मैंने सोचा कि पैरामीटर तब तक कोई फर्क नहीं पड़ता जब तक आप इसे कुछ पास नहीं कर रहे हैं। –