用于Integration Test的ASP.NET Core WebAPi,TestHost和[FromBody]参数

时间:2017-11-02 18:12:42

标签: c# asp.net-web-api integration-testing asp.net-core-testhost

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

0 个答案:

没有答案