【发布时间】:2021-12-08 06:58:38
【问题描述】:
我正在为服务类编写一个简单的 xunit 测试用例。
我嘲笑了_userAPIRepository,但它返回 null 值。它应该返回teacherDetails。
下面是服务类方法和xunit测试用例方法。
服务方式
public async Task<List<TeacherDto>> GetTeacherDetails(Teacher teacher)
{
List<TeacherDto> teacherDetails = new List<TeacherDto>();
UserByUsername userByUsername = new UserByUsername
{
Username = teacher.Name,
Id = teacher.Id
};
teacherDetails = await _userServiceAPI.GetUserIdsByName(userByUsername);
return teacherDetails;
}
xunit 测试用例
[Fact()]
public async Task GetUserDetails()
{
//Arrange
List<TeacherDto> teacherDetails = ServiceDataSource.teacherDetails();
Teacher teacher = ServiceDataSource.teacher();
UserByUsername userByUsername = new UserByUsername
{
Username = teacher.Name,
Id = teacher.Id
};
_userAPIRepository.Setup(x => x.GetUserIdsByName(userByUsername)).Returns(Task.FromResult(teacherDetails);
var result = await _userServiceAPI.GetTeacherDetails(teacher);
//Assert
Assert.True(result.Count > 0);
}
【问题讨论】:
-
使用参数匹配器从模拟中获取所需的行为。当参数设置与执行测试时传入的参数不匹配时,模拟默认返回 null
标签: c# unit-testing asp.net-core asp.net-core-webapi moq