在单元测试中 运行 时如何访问控制器返回的数据?

How do you access the data returned by a controller when run in unit tests?

我有一个 Asp .net core 2.2 web api。我正在尝试在多个控制器上设置单元测试。我让它工作到它调用控制器的地方

控制器

[HttpGet("list")]
public ActionResult Get([FromQuery] string q = null)
    {
        if (q != null)
            return Ok(new ClientListResponse(ClientHelper.FindClientByClientIdOrClientName(_configurationDbContext.Clients, q)));

        return Ok(new ClientListResponse(_configurationDbContext.Clients.ToList()));
    }

测试调用

var allClients = controller.Get();  

问题

现在,当我在调试中查看它时,一切看起来都很好。我可以看到该值包含返回的正确对象。

然而,当它尝试访问变量时,它们并不存在。

我怀疑这与响应是 ActionResult 有关。我试着把它转换成我能想到的一切。

在单元测试中 运行 如何访问控制器返回的数据?

将其转换为 OkObjectResult

我们的:

var controller = SetupAdminTestsForPassword();
var result = controller.ValidateTokenForUserCreation(new ValidateUserTokenRequest() { token = "VALIDCREATEUSERTOKEN"});
var okResult = result as OkObjectResult;

// assert
Assert.IsNotNull(okResult);
Assert.IsNotNull(okResult.Value);
Assert.IsNotNull(okResult.Value as ValidateUserTokenResponse);
Assert.IsTrue((okResult.Value as ValidateUserTokenResponse).IsValid);

我们还使用 dotnet core 2.2 和 Moq 进行测试。