如何从IActionResult中提取列表

时间:2018-06-12 16:15:43

标签: c# unit-testing asp.net-core asp.net-core-webapi

我正在尝试从返回IActionResult的API控制器测试结果。目前它正在返回一个具有状态代码,值等的对象。我正在尝试仅访问该值。

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返回一个列表,其中包含一个列表“Value”,它是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 个答案:

答案 0 :(得分:4)

这是因为Result的{​​{1}}是Task派生类,IActionResult

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

例如

OkObjectResult