我正在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 .....
}
}
这是用于将错误记录到文件中。我无法模拟此功能。我该怎么办?
您将不得不更改代码。单元测试的主要优点之一不是保护您免于错误,而是帮助您编写更好的代码。
ErrorLogHelper
是服务或水平方面。
Moq是设计用来模拟接口或虚拟方法。为此,您需要以某种方式将此依赖项注入目标对象。
在这种情况下,您需要使其成为服务依赖项,让它实现接口并通过属性或构造函数进行注入