2017-08-03 93 views
2

我有一个dotnetcore网络应用程序,并期待单元测试控制器。我如何解决这个问题?dotnet核心网络应用程序单元测试控制器

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

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

通过模拟接口/依赖项并对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

相关问题