因此,我正在使用FakeItEasy为我的ASP.NET Web Api应用程序编写xUnit测试. 下面是我的测试,它应该返回一个MemberDto对象列表;
public async Task UsersController_GetUsers_ReturnsOK()
{
//Arrange
//var users = A.Fake<IEnumerable<MemberDto>>();
//A.CallTo(() => _userRepository.GetMembersAsync(A<string>.That.Matches(email => true))).Returns(users);
//Act
var result = await _controller.GetUsers();
//Assert
result.Should().NotBeNull();
result.Should().BeOfType<ActionResult<IEnumerable<MemberDto>>>();
result.Result.Should().BeOfType<OkObjectResult>();
}
}
GetUser方法在控制器中的实现:
{
public async Task<ActionResult<IEnumerable<MemberDto>>> GetUsers()
{
var currentUser = await _userRepository.GetUserByEmailAsync(_userExtensions.GetEmail(User));
users = await _userRepository.GetMembersAsync(currentUser.Email);
return Ok(users);
}
}
正如您所看到的,我已经注释掉了xUnit测试中的代码行,其中它模拟了_userRepository中的GetMembersAsync方法,但无论如何它都会伪造数据(用户不是空的,它的类型将是伪造的System.Collection...)
就是这样,有人能给我解释一下吗?这是我第一次编写单元测试,我一直在YouTube上看到一个叫Teddy Smith的人在那里解释如何编写单元测试.我从他的GitHub下载了他的示例课程,并用嘲弄的方式注释掉了这行,它确实通过了测试,无论这行有没有,什么都没有改变.谢谢