Как извлечь список из IActionResult - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь проверить результат от контроллера API, который возвращает 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 Ответ

0 голосов
/ 13 июня 2018

Это потому, что 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.
}
...