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

问题描述 投票:0回答:1

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

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,然后完成。

c# .net unit-testing nunit adapter
1个回答
0
投票

你知道我建议你使用库Moq。这个库有很酷的方法Verify,你可以测试你的方法是否被调用。你需要做这样的事情:

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

然后objectA.Verify(o=>o.Method1(), Times.Once); //和Method2一样。

© www.soinside.com 2019 - 2024. All rights reserved.