dotnet核心web app单元测试控制器

时间:2017-08-03 03:03:53

标签: c# unit-testing asp.net-core .net-core

我有一个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作为参数传入。我如何对此进行单元测试?

1 个答案:

答案 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);
}

您还应该花点时间查看提供的文档

Unit Testing in .NET Core