C# dotnet核心web应用程序单元测试控制器
我有一个dotnetcore web应用程序,希望对控制器进行单元测试。我该怎么办 我有一个简单的控制器,看起来像这样C# dotnet核心web应用程序单元测试控制器,c#,unit-testing,asp.net-core,.net-core,C#,Unit Testing,Asp.net Core,.net Core,我有一个dotnetcore web应用程序,希望对控制器进行单元测试。我该怎么办 我有一个简单的控制器,看起来像这样 public class ConversionController : Controller { private readonly INumberService _numberService; public ConversionController(INumberService numberService) { this._number
public class ConversionController : Controller {
private readonly INumberService _numberService;
public ConversionController(INumberService numberService)
{
this._numberService = numberService;
}
// GET http://localhost:9789/api/conversion/123
[HttpGet("{number}")]
public string Get(decimal number)
{
return _numberService.ConvertToWords(number);
}
}
INumberService
作为参数传入。如何对其进行单元测试?模拟接口/依赖项,并对Get方法进行独立的单元测试。您可以创建自己的mock,也可以使用mock框架来模拟依赖项。从这里可以断言被测系统的行为符合预期
例如,下面的简单测试用于模拟依赖关系并测试Get
方法
[TestMethod]
public void ConversionController_Get_Should_Return_Five() {
//Arrange
var number = 5;
var expected = "five";
var mock = new Mock<INumberService>();
mock.Setup(_ => _.ConvertToWords(number)).Returns(expected);
var sut = new ConversionController(mock.Object);
//Act
var actual = sut.Get(number);
//Assert
Assert.AreEqual(expected, actual);
}
[TestMethod]
public void ConversionController\u Get\u Should\u Return\u Five(){
//安排
var数=5;
var预期值为“五”;
var mock=new mock();
mock.Setup(=>u.ConvertToWords(number)).Returns(预期);
var sut=新的ConversionController(mock.Object);
//表演
var实际值=sut.Get(数字);
//断言
断言.AreEqual(预期、实际);
}
您还应该花一些时间检查提供的文档