Asp.NET Core集成测试:POST方法获取空值

时间:2018-11-22 11:43:06

标签: c# rest testing asp.net-core integration-testing

我正在尝试使用本link中指示的WebClientFactory方法来测试.NET Core REST API。当我测试GET方法时,一切正常,但是我不知道为什么当我通过PostAsync方法发送数据时,它以null的形式到达。

这是测试代码:

public class TravelAgentEndToEndTest : IClassFixture<WebApplicationFactory<Startup>>
{
    private readonly WebApplicationFactory<Startup> factory;
    private readonly HttpClient httpClient;

    public TravelAgentEndToEndTest(WebApplicationFactory<Startup> factory)
    {
        this.factory = factory;
        this.httpClient = factory.CreateClient();
    }



    [Fact]
    public async Task TravelAgentReceivesInvalidClientDataAndRejectsIt()
    {   
        string emptyClientData = "Bad";
        string url = "/api/clients";
        HttpResponseMessage response = await httpClient.PostAsync(url,
            new StringContent(emptyClientData,Encoding.UTF8, "application/json"));


        Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
    }
}

我的控制器中的POST方法:

[HttpPost]
public void Post([FromBody]string value)
{
    Console.WriteLine(value);
}

调试测试时,我发现valuenull。 知道我在哪里犯错吗?

PS1:我尝试使用Postman测试post方法,并且该方法有效。

PS2:Startup类是Visual Studio使用Asp.NETCore Web项目下的Web Api模板创建的

0 个答案:

没有答案