Как использовать. Net Core FileContentResult в методе тестирования httpClient - PullRequest
0 голосов
/ 11 июля 2020

Доброго времени суток, народ!

У меня есть метод. Net Core 2.2 Api Controller, который возвращает FileContentResult, например:

  [HttpGet]
  public async Task<IActionResult> Get()
  {
    return File(_service.GetCsvFile(), "text/csv", "results.csv");
  }

также, у меня есть интеграционный тест, который использует WebHostFixture и httpClient для получения результатов, однако содержимое всегда пусто, какой бы метод я ни попробовал. Пока есть файл с возвращаемым содержимым:

  var response = await WebHost.Client.GetAsync(url, HttpCompletionOption.ResponseContentRead);

  var result = await response.Content.ReadAsByteArrayAsync();

также, когда я делаю следующее, содержимое не читается:

  var response = await WebHost.Client.GetByteArrayAsync(url);

Все остальные интеграционные тесты с использованием этого WebHostFixture запускаются успешно, поэтому кажется, что это единственная конечная точка, которая не возвращает данные должным образом в моей тестовой среде. Когда я вызываю конечную точку с помощью PostMan, файл CSV с содержимым возвращается правильно.

Кроме того, в Postman, помимо получения двоичных данных в теле, возвращаются следующие заголовки:

введите описание изображения здесь

Однако в моем тестовом методе после вызова метода GetAsyn c response.Content.Headers.ContentType равен "text / csv" , но response.Content.Headers.ContentLength - это 0 .

Что я делаю неправильно и почему здесь не возвращаются двоичные данные?

...