使用Microsoft Test Framework和Moq我試圖驗證是否調用了log4net方法。設置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屬性的getter上。即使該屬性已經設置爲ILogProxy,我也總是返回LogManager.GetLogger(...);
。我的印象是,該物業的get訪問者不會被稱爲,因爲我已經設置了這樣的代理sampleObject.Log = logMockObject.Object;
是「做的東西得到了所謂的」完全匹配的字符串傳遞給.INFO? – 2012-01-27 21:09:52
'sampleObject.DoStuffAndLogInfo()'做了什麼? – 2012-01-27 21:10:43
不是。參數是否重要?我認爲只要你傳遞了一些信息,參數就不重要了。 – 2012-01-27 21:10:58