所以我使用FakeItEasy为我的Asp.net Web Api应用程序编写xUnit测试。
这是我的测试,它应该返回MemberDto对象的列表;
public async Task UsersController_GetUsers_ReturnsOK()
{
var result = await _controller.GetUsers();
result.Should().NotBeNull();
result.Should().BeOfType<ActionResult<IEnumerable<MemberDto>>>();
result.Result.Should().BeOfType<OkObjectResult>();
}
}
GetUsers方法在控制器中的实现:
{
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方法,但它无论如何都会伪造数据(用户不是null,它将具有Faked System.Collection类型…)
就是这样,有人能给我解释一下吗?这是我第一次写单元测试,我在YouTube上看到一个叫Teddy Smith的家伙解释了如何写。我从他的github下载了他的示例课程,并做了同样的事情,用嘲讽的方式评论了这条线,它确实通过了测试,无论这条线是否存在,一切都没有改变。谢谢