如何在不更改 Controller 操作中的任何代码的情况下检查作为 OkObjectResult 的一部分返回的值的计数是否为 2?
这是我的 Controller Action
public IActionResult GetUserNames()
{
var users = _repository.GetUsers();
return Ok(users.Select(u => u.Name));
}
我的单元测试是这样的
[Fact]
public void GetUserNames_ValidRequest_ShouldReturnOk()
{
_repository
.Setup(r => r.GetUsers())
.Return(new List<User>
{
new User { Name = "SomeRandomName" },
new User { Name = "SomeRandomName2" }
});
var result = _controller.GetUserNames();
result.Should().BeOfType<OkObjectResult>();
// Code to check if 2 names are returned
}
我在单元测试中使用 Mock 和 FluentAssertions。
最佳答案
你应该能够做这样的事情:
var objectResult = Assert.IsType<OkObjectResult>(result);
var model = Assert.IsAssignableFrom<List<string>>(objectResult.Value);
Assert.Equal(2, model.Count);
关于c# - 单元测试 - 断言 Controller 操作返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891336/