使用 moq 和 nunit 在 action-result C# 中模拟一个 class 的方法
Mock a method of a class inside action-result C# using moq and nunit
我正在 asp.net 核心项目中对控制器进行单元测试。在一节中,有这样一段代码实例化 class 的对象并调用其方法。
public class ControllerNameController: ControllerBase{
private IDependency _dependency;
public ControllerNameController(IDependency dependency){
_dependency = dependency
}
[HttpGet, Route("Get")]
public ActionResult<dynamic> Get()
{
......
string someString = "abcd";
ClassOne classOneObject = new ClassOne(_dependency);
classOneObject.ClassOneMethod(someString);
..........
return .....
}
}
我无法模拟此功能。我该怎么做?
您将不得不更改密码。单元测试的主要优点之一不是防止您出错,而是帮助您编写更好的代码。
ErrorLogHelper
要么是服务,要么是水平方面。
Moq 是为模拟接口或虚拟方法而设计的。为此,您需要以某种方式将此依赖项注入目标对象。
在这种情况下,您需要将其作为服务依赖项,让它实现一个接口并通过 属性 或构造函数注入。
内联初始化意味着代码必须运行带有单元测试,因为它是代码流的组成部分。
private IHostingEnvironment _hostingEnvironment;
public IErrorLogHelper logHelper
public ControllerNameController(IHostingEnvironment hostingEnvironment, IErrorLogHelper logHelper){
_hostingEnvironment = hostingEnvironment;
this.logHelper = logHelper;
}
在你的收获中
catch (Exception ex)
{
string controllerInfo = controller.ActionDescriptor.DisplayName;
logHelper.ErrorLogToFile(controllerInfo, ex);
}
我正在 asp.net 核心项目中对控制器进行单元测试。在一节中,有这样一段代码实例化 class 的对象并调用其方法。
public class ControllerNameController: ControllerBase{
private IDependency _dependency;
public ControllerNameController(IDependency dependency){
_dependency = dependency
}
[HttpGet, Route("Get")]
public ActionResult<dynamic> Get()
{
......
string someString = "abcd";
ClassOne classOneObject = new ClassOne(_dependency);
classOneObject.ClassOneMethod(someString);
..........
return .....
}
}
我无法模拟此功能。我该怎么做?
您将不得不更改密码。单元测试的主要优点之一不是防止您出错,而是帮助您编写更好的代码。
ErrorLogHelper
要么是服务,要么是水平方面。
Moq 是为模拟接口或虚拟方法而设计的。为此,您需要以某种方式将此依赖项注入目标对象。
在这种情况下,您需要将其作为服务依赖项,让它实现一个接口并通过 属性 或构造函数注入。
内联初始化意味着代码必须运行带有单元测试,因为它是代码流的组成部分。
private IHostingEnvironment _hostingEnvironment;
public IErrorLogHelper logHelper
public ControllerNameController(IHostingEnvironment hostingEnvironment, IErrorLogHelper logHelper){
_hostingEnvironment = hostingEnvironment;
this.logHelper = logHelper;
}
在你的收获中
catch (Exception ex)
{
string controllerInfo = controller.ActionDescriptor.DisplayName;
logHelper.ErrorLogToFile(controllerInfo, ex);
}