Параметры ASP.NET Core WebAPi, TestHost и [FromBody] для тестирования интеграции
У меня есть основной веб-проект ASP.NET, который уже используется, и я хочу начать интеграционные тесты для автоматизации.
Контроллеры не имеют ничего, кроме основного:
[HttpPost]
public IActionResult Post([FromBody]string req)
{
var dto = JsonConvert.DeserializeObject<DTO>(req);
this.service.Create(dto);
return Json(dto.Id);
}
Я использую Microsoft.AspNetCore.TestHost для создания клиента и сервера для запуска интеграционного тестирования, но затем, когда я хочу отправить полезную нагрузку через клиента, контроллер на WebApi не находит метку параметра как [FromBody]. Я уже проверял, что почтальон отправляет строку в теле метода post и работает правильно, так что я делаю не так?
[Fact]
public async Task Execute()
{
// Act
var dto = new DTO() { Field1 = "Filed1" ...};
var json = JsonConvert.SerializeObject(dto);
HttpContent payload = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("/api/sample", payload);
response.EnsureSuccessStatusCode();
}