【问题标题】:dotnet core web app unit test controllerdotnet core web app 单元测试控制器
【发布时间】:2017-08-03 03:03:53
【问题描述】:

我有一个 dotnetcore Web 应用程序,并希望对控制器进行单元测试。我该怎么办?

我有一个看起来像这样的简单控制器

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 2021-01-24
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      相关资源
      最近更新 更多