【发布时间】:2021-10-16 06:05:22
【问题描述】:
单元测试控制器返回IHttpActionResult 原因
System.NullReferenceException: '对象引用未设置为对象的实例。
[HttpGet]
public async Task<IHttpActionResult> Get(Guid myId)
{
var myaccount = await _myaccountService.GetMyAccount(myId);
return Ok(myaccount);
}
在测试方法中的代码
var actualResult = (await controller.Get(It.IsAny<Guid>()) as OkNegotiatedContentResult<IEnumerable<MyAccount>>).Content;
返回
System.NullReferenceException: '对象引用未设置为对象的实例。**
[TestMethod]
public async Task GeMyAccount_Returns_CorrectData()
{
// Arrange
var expectedResult = new List<MyAccount>
{
new MyAccount
{
Id = "1",
Name = "Name1"
},
new MyAccount
{
Id = "2",
Name = "Name2"
},
};
//Act
var mockMyAccountService = new Mock<IMyAccountService>();
mockMyAccountService.Setup(mock =>
mock.GetMyAccount(It.IsAny<Guid>())).Returns(Task.FromResult(expectedResult));
var controller = new MyAccountController(mockMyAccountService.Object);
var actualResult = (await controller.Get(It.IsAny<Guid>()) as
OkNegotiatedContentResult<IEnumerable<MyAccount>>).Content;
mockOnrAccountService.Verify(m => m.GetMyAccount(It.IsAny<Guid>()));
Assert.AreEqual(expectedResult, actualResult);
不知道我做错了什么。
【问题讨论】:
标签: c# unit-testing asp.net-web-api nunit moq