代码之家  ›  专栏  ›  技术社区  ›  Linda Lawton - DaImTo

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

  •  0
  • Linda Lawton - DaImTo  · 技术社区  · 7 年前

    我有一个Asp.NETCore2.2WebAPI。我正在尝试在一些控制器上设置单元测试。我让它工作到它调用控制器的程度

    控制器

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

    问题

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

    enter image description here

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

    enter image description here

    我怀疑这与作为行动结果的反应有关。我试着把它变成我能想到的一切。

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Dave C    7 年前

    把它抛到一边 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);
    

    我们还使用DotnetCore2.2和Moq进行测试。