使用moq和nunit模拟动作结果C#中的类的方法

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

我正在asp.net核心项目中对控制器进行单元测试。在一节中,有这样的代码实例化类的对象并调用其方法。

public class ControllerNameController: ControllerBase{
    private IHostingEnvironment _hostingEnvironment;
    public ControllerNameController(IHostingEnvironment hostingEnvironment){
         _hostingEnvironment = hostingEnvironment
    }

       [HttpGet, Route("Get")]
        public ActionResult<dynamic> Get()
        {
            try
            {

               ................
            }
            catch (Exception ex)
            {

                string controllerInfo = controller.ActionDescriptor.DisplayName;
                ErrorLogHepler errorLog = new ErrorLogHepler(_hostingEnvironment);
                errorLog.ErrorLogToFile(controllerInfo, ex);
            }


            return .....

        }
}

这是用于将错误记录到文件中。我无法模拟此功能。我该怎么办?

c# asp.net-core nunit moq
1个回答
0
投票

您将不得不更改代码。单元测试的主要优点之一不是保护您免于错误,而是帮助您编写更好的代码。

ErrorLogHelper是服务或水平方面。

Moq是设计用来模拟接口或虚拟方法。为此,您需要以某种方式将此依赖项注入目标对象。

在这种情况下,您需要使其成为服务依赖项,让它实现接口并通过属性或构造函数进行注入

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