gpt4 book ai didi

Moq 静态类中的静态方法

转载 作者:行者123 更新时间:2023-12-03 21:18:17 27 4
gpt4 key购买 nike

 public Product GetbyID(int id)
{
try
{
//mycode Product p=..........

}
catch (DataAccessException ex)
{
throw new BusinessException(ex.ErrorCode);
}
catch (Exception ex)
{
BusinessExceptionHandler.LogException(ex);
}

return p;
}

上面给出的是我需要编写测试用例的代码片段。
这里 LogException(ex);是静态类 BusinessExceptionHandler 中的静态方法

我引用了 Moq 框架工作 2.6.1014.1

我怎样才能起订方法 BusinessExceptionHandler.LogException

我确实更喜欢不需要对 GetbyID 方法进行任何更改的模拟机制

最佳答案

Moq 不允许模拟静态方法,因此您可能需要更改静态方法的工作方式。一种选择是让静态方法调用依赖项的实例方法。因此,您将使用 Log 方法创建一个“Logger”类,并将静态 Logger 字段/属性 (BusinessExceptionHandler.Logger) 添加到您的静态类。在实际场景中,您可以使用标准 Logger 实例填充 BusinessExceptionHandler.Logger,将其用作 Singleton。为了进行测试,将 Mock 注入(inject) BusinessExceptionHandler.Logger 并设置您的期望并针对该模拟进行验证。

关于Moq 静态类中的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9052736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com