为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 IActionResult 中提取列表

如何从 IActionResult 中提取列表

C#
开满天机 2021-08-07 18:00:00
我正在尝试测试返回IActionResult. 目前它正在返回一个带有状态代码、值等的对象。我试图只访问该值。List<Batch.Context.Models.Batch> newBatch2 = new List<Batch.Context.Models.Batch>();var actionResultTask = controller.Get();actionResultTask.Wait();newBatch2 = actionResultTask.Result as List<Batch.Context.Models.Batch>;actionResultTask.Result返回一个列表,其中包含一个列表“值”,它是一个列表,Batch.Context.Models.Batch我无法访问此值。将其转换为列表后,它变为null。这是控制器[HttpGet][ProducesResponseType(404)][ProducesResponseType(200, Type = typeof(IEnumerable<Batch.Context.Models.Batch>))][Route("Batches")]public async Task<IActionResult> Get(){    var myTask = Task.Run(() => utility.GetAllBatches());    List<Context.Models.Batch> result = await myTask;    return Ok(result);}如何以列表形式访问该值。
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

这是因为Result的Task是一个IActionResult派生类,OkObjectResult


使测试异步。等待被测方法。然后执行所需的断言。


例如


public async Task MyTest {


    //Arrange

    //...assume controller and dependencies defined.


    //Act

    IActionResult actionResult = await controller.Get();


    //Assert

    var okResult = actionResult as OkObjectResult;

    Assert.IsNotNull(okResult);


    var newBatch = okResult.Value as List<Batch.Context.Models.Batch>;

    Assert.IsNotNull(newBatch);


    //...other assertions.

}


查看完整回答
反对 回复 2021-08-07
  • 1 回答
  • 0 关注
  • 416 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信