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プロパティのゲッターにあります。プロパティが既にILogProxyに設定されていても、私はいつもLogManager.GetLogger(...);
を返していました。私はそのようなプロキシを設定しているため、プロパティのアクセサーが呼び出されないという印象を受けましたsampleObject.Log = logMockObject.Object;
は.INFOに渡される正確な文字列「ものが呼ばれましたか」となっていますか? –
'sampleObject.DoStuffAndLogInfo()'は何をしますか? –
パラメータは重要ですか?あなたが何かを渡している限り、パラメータは重要ではないと思った。 –