如何模拟自定义ILoggerManager进行UnitTest

时间:2019-05-30 09:31:11

标签: c# mocking

我声明了一个类LogManager和一个接口 ILogManager,并且有一个方法LoggerError,该方法使用ILogger(DI) logerror并执行其他操作。

有一个类A(DI ILogClass)并声明了一个方法funA(),而funA()将使用_LogManager.LoggerError("test message")

  • 何时可以使用模拟进行单元测试?
  • 如何Verify _LogManager.LoggerError("test message")

如果我仅在类ILogger中使用A,则可以{:1}与:

Verify

但不支持loggerMock.Verify(l => l.Log(LogLevel.Error,It.IsAny<EventId>(), It.Is<object>(o => o.ToString().Contains("test message")),null,It.IsAny<Func<object, Exception, string>>()), Times.Once); 模拟。

ILogManager

1 个答案:

答案 0 :(得分:0)

您的LoggerManager<TCategoryName>只是ILogger<TCategoryName>的包装,因此您可以模拟ILogger<TCategoryName>并验证是否已完成,并且应该可以正常工作。

尽管实际调用SUT时,您将不得不相应地注入LoggerManager<TCategoryName>