我有一个已经在使用的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();
}