单元测试 - 控制器操作返回的断言对象



如何在不更改控制器操作中的任何代码的情况下检查作为 OkObjectResult 的一部分返回的值是否计数为 2?

这是我的控制器操作

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);

最新更新