猿问

如何从 IActionResult 中提取列表

我正在尝试测试返回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);


}

如何以列表形式访问该值。


开满天机
浏览 417回答 1
1回答

达令说

这是因为Result的Task是一个IActionResult派生类,OkObjectResult使测试异步。等待被测方法。然后执行所需的断言。例如public async Task MyTest {&nbsp; &nbsp; //Arrange&nbsp; &nbsp; //...assume controller and dependencies defined.&nbsp; &nbsp; //Act&nbsp; &nbsp; IActionResult actionResult = await controller.Get();&nbsp; &nbsp; //Assert&nbsp; &nbsp; var okResult = actionResult as OkObjectResult;&nbsp; &nbsp; Assert.IsNotNull(okResult);&nbsp; &nbsp; var newBatch = okResult.Value as List<Batch.Context.Models.Batch>;&nbsp; &nbsp; Assert.IsNotNull(newBatch);&nbsp; &nbsp; //...other assertions.}
随时随地看视频慕课网APP
我要回答