在单元测试中 运行 时如何访问控制器返回的数据?
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 进行测试。
我有一个 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 进行测试。