解决方法如下:
public interface ILogger
{
void LogInfo(string message);
void LogError(string message);
}
public class Logger : ILogger
{
public void LogInfo(string message)
{
// 在此处实现日志记录逻辑
}
public void LogError(string message)
{
// 在此处实现日志记录逻辑
}
}
public class MyClass
{
private readonly ILogger _logger;
public MyClass(ILogger logger)
{
_logger = logger;
}
public void DoSomething()
{
// 在此处使用 _logger 记录日志
_logger.LogInfo("Doing something...");
}
}
[TestClass]
public class MyClassTests
{
[TestMethod]
public void DoSomething_Should_Log_Info()
{
// 创建一个模拟 ILogger 对象
var loggerMock = new Mock();
// 创建要测试的对象,并将模拟 ILogger 对象传入构造函数
var myClass = new MyClass(loggerMock.Object);
// 执行要测试的方法
myClass.DoSomething();
// 验证日志记录方法是否被调用
loggerMock.Verify(x => x.LogInfo("Doing something..."), Times.Once);
}
}
以上代码示例演示了如何在单元测试中模拟 ILogger 接口,并验证日志记录方法是否被正确调用。请注意,此示例中使用了 Moq 框架来创建模拟对象和验证方法是否被调用,但也可以使用其他的 Mocking 框架或手动创建模拟对象来达到相同的效果。
下一篇:ASP.NET单元测试基础