我有一个dotnetcore网络应用程序,我正在寻找单元测试控制器。我怎么得到这个?
我有一个看起来像这样的简单控制器
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
作为参数传入。我如何对此进行单元测试?
答案 0 :(得分:1)
通过模拟接口/依赖项并对Get方法执行隔离单元测试。您可以创建自己的模拟,也可以使用模拟框架来模拟依赖项。从那里断言被测系统的行为符合预期。
例如,以下简单测试使用Moq来模拟依赖项并测试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);
}
您还应该花点时间查看提供的文档