【发布时间】:2020-04-29 11:43:37
【问题描述】:
我正在使用 xUnit,当我调用控制器的方法时,我得到了null。当我调试时,它不会去RemovePrimeNumbers方法而是返回null。
出现这种情况有什么原因吗?
测试方法
public void ControllerTest()
{
PrimeNumberViewModel returnObject = new PrimeNumberViewModel();
returnObject.Result = new PrimeNumberModel();
Mock<IPrimeNumberOperations> _mockService = new Mock<IPrimeNumberOperations>();
var _controller = new PrimeNumberOperationsController(_mockService.Object) ;
_mockService.Setup(x => x.RemovePrimeNumbers("Test123")).Returns(returnObject);
var result = _controller.RemovePrimeNumbers("HAHAHA 2");
Assert.Equal("HAHAHA 2", result);
}
控制器
[HttpGet()]
public string RemovePrimeNumbers(string plainText)
{
PrimeNumberViewModel result = _primeNumberService.RemovePrimeNumbers(plainText);
return result.Result.removedPrimeNumbersText; // *result* is getting NULL
}
【问题讨论】:
-
如果控制器是被测对象,则不应模拟。模拟依赖项并将它们注入到实际的控制器中。
标签: c# unit-testing moq asp.net-core-webapi