我有一个类,想测试方法是否被调用,记录器日志。
public class LoggerAdapter<TheClassWhichHasTheMethod>: ILoggerAdapter<etc>
这是我制作的适配器。所以我有我在logger类中使用和需要的方法,并将它们放在适配器记录器类中
public void MethodOne(param1, param2, param3, param4)
而这个void方法本身调用适配器中的下一个方法:
public void MethodTwo(param1, param2, param3, param4)
之后,日志记录完成。但等等,还有更多。记录器正在执行其工作的方法如下所示:
public async Task Execute()
{
await //some logic
//some more logic
Here the logger does its job: _logger.MethodOne(param1, param2, param3)
//After logging finishes, more logic follows
}
现在,适配器的接口需要扩展ILogger
因为我需要ILogger作为我的param
之一。事情是,在我做了Act
部分之后:
//await _classInstance.Execute();
因为我正在测试一个void方法,所以有一些超时。好的,超时完成但在此之后我不知道如何验证记录器是否已记录,即_classInstance.Execute()启动,记录器调用MethodOne,它调用MethodTwo,然后完成。
你知道我建议你使用库Moq
。这个库有很酷的方法Verify
,你可以测试你的方法是否被调用。你需要做这样的事情:
var objectA = new Mock<ObjectA>();
// ObjectA有Method1,Method2。 Method1,Method2必须是公共虚拟或属于接口,因此ObjectA必须实现此接口;
然后objectA.Verify(o=>o.Method1(), Times.Once);
//和Method2一样。