就像处理世界上的测试一样.NET
。我刚刚卡在一个测试上,我不明白为什么 mock 没有返回必要的数据集
模拟测试本身
[Fact]
public async Task GetAllRequestWithSuccess()
{
// Arrange
var testUsers = GetTestModelsUser(); // список необходимого типа данных, модели
var testCount = testUsers.Count(); // количество вхождений
var mockService = new Mock<IUserService>();
var mockLogger = new Mock<ILogger<UserController>>();
mockService.Setup(service => service.ListUsers(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<string>(), It.IsAny<bool>()))
.ReturnsAsync((testUsers, testCount));
var controller = new UserController(mockLogger.Object, mockService.Object);
// Act
var actionResult = await controller.All();
var objectReuslt = actionResult as OkObjectResult;
}
尚未添加断言块。
没有构建和运行错误,但actionResult
它有一个BadRequestResult
. 我进行了调试并确定模拟没有返回所需的数据集。也就是说,变量testUsers
和testCount
包含数据,但是当被调用时,mock 会ListUsers()
返回(null, 0)
.
如何制作模拟作品?
UPD
听从enSO的建议,我尝试分别收集和传输数据,也没有带来结果。
[Fact]
public async Task GetAllRequestWithSuccess()
{
// Arrange
List<UserViewModel> testUsers = GetTestModelsUser();
int testCount = testUsers.Count();
(List<UserViewModel> users, int totalCount) t = (testUsers, testCount);
var mockService = new Mock<IUserService>();
var mockLogger = new Mock<ILogger<UserController>>();
mockService.Setup(service => service.ListUsers(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<string>(), It.IsAny<bool>()))
.ReturnsAsync(t);
var controller = new UserController(mockLogger.Object, mockService.Object);
在这种情况下要检查和更改两件事
Strict