我有一个已经在使用的 ASP.NET 核心 WebAPI 项目,我想开始自动化集成测试。
控制器只有基本的:
[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();
}