是否可以模拟NLog日志方法?

cbp*_*cbp 6 nlog

是否可以/使用Rhino Mocks或类似方法模拟NLog日志方法?

小智 9

使用Nuget: install-package NLog.Interface

然后: ILogger logger = new LoggerAdapter([logger-from-NLog]);


Pio*_*rak 3

您只能模拟虚拟方法。但是,如果您创建一些用于日志记录的接口,然后使用 NLog 实现它,您可以使用依赖项注入,并在您的测试中使用模拟接口来查看被测系统 (SUT) 是否正在记录您期望它记录的内容。

public class SUT
{
  private readonly ILogger logger;
  SUT(ILogger logger) { this.logger = logger;}
  MethodUnderTest() {
    // ...
    logger.LogSomething();
    // ...
  }
}

// and in tests
var mockLogger = new MockLogger();
var sut = new SUT(mockLogger);
sut.MethodUnderTest();
Assert.That("Expected log message", Is.Equal.To(mockLogger.LastLoggedMessage));