使用适配器模式测试记录器

时间:2019-03-13 13:04:30

标签: c# .net unit-testing nunit adapter

我有一个类,想测试是否调用了该方法,记录器会记录日志。

public class LoggerAdapter<TheClassWhichHasTheMethod>: ILoggerAdapter<etc>

这是我制造的适配器。所以我在logger类中有了我正在使用和需要的方法,并将它们放在适配器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,然后完成。

1 个答案:

答案 0 :(得分:0)

您知道我建议您使用库Moq。该库具有很酷的方法Verify,您可以在其中测试是否调用了方法。 您需要执行以下操作:

var objectA = new Mock<ObjectA>(); // ObjectA具有方法1,方法2。 Method1,Method2必须是公共虚拟的或属于某个接口,因此ObjectA必须实现此接口;

然后objectA.Verify(o=>o.Method1(), Times.Once); //和方法2相同。