Lyb*_*ker 4 c# trace system.diagnostics moq mocking
为什么Moq Verify失败并出现"Moq.MockException:未在模拟上执行调用"?
var mock = new Mock<TraceListener>();
var ts = new TraceSource("traceSourceName", SourceLevels.Verbose);
ts.Listeners.Add(mock.Object);
var message = "the message";
ts.TraceEvent(TraceEventType.Verbose, 0, message);
ts.Flush();
mock.Verify(x => x.WriteLine(message));
Run Code Online (Sandbox Code Playgroud)
我知道这个问题已经存在很久了,但答案如下......
当您通过TraceSource编写跟踪事件时,它会调用跟踪侦听器TraceEvent方法来执行跟踪 - 因此您需要验证对listener.TraceEvent的调用,而不是侦听器.WriteLine ...
var mock = new Mock<TraceListener>();
var ts = new TraceSource("traceSourceName", SourceLevels.Verbose);
ts.Listeners.Add(mock.Object);
var message = "the message";
ts.TraceEvent(TraceEventType.Verbose, 0, message);
mock.Verify(x => x.TraceEvent(It.IsAny<TraceEventCache>(), "traceSourceName",
TraceEventType.Verbose, 0, message), Times.Once(), "Expected a trace");
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人!
干杯,
摩根
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |