本文介绍了是否可以模拟 NLog 日志方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

解决方案

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

公共类 SUT{私有只读 ILogger 记录器;SUT(ILogger logger) { this.logger = logger;}MethodUnderTest() {//...logger.LogSomething();//...}}//在测试中var mockLogger = new MockLogger();var sut = new SUT(mockLogger);sut.MethodUnderTest();Assert.That("预期的日志消息", Is.Equal.To(mockLogger.LastLoggedMessage));

Is it possible/easy to mock NLog log methods, using Rhino Mocks or similar?

解决方案

You can only mock virtual methods. But if You create some interface for logging and then implement it using NLog You can use dependency injection and in Your tests use mocked interface to see if system under test (SUT) is logging what You expect it to log.

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));

这篇关于是否可以模拟 NLog 日志方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 08:27