1

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

0 回答 0