无法使用RestSharp断言Bad Request [HTTP 400错误],会抛出System.Net.Http.HttpRequestException异常。

6
使用RestSharp,我编写了以下测试,期望输出结果为以Json格式返回一些错误信息并且状态码为400。
但是以下测试在等待客户端PostAsync(request)时失败并抛出"System.Net.Http.HttpRequestException : Request failed with status code BadRequest"异常,并未达到断言语句。
使用Fiddler验证了我的请求和响应都按预期工作。
非常感谢您提供的任何解决方法。谢谢!
    [Test]
    public async Task Test1Async()
    {
        var jsonData = json;
        var client = new RestClient(endpoint);
        var request = new RestRequest();
        request.AddStringBody(jsonData, ContentType.Json);
        var response = await client.PostAsync(request);
        Assert.AreEqual(400, response.StatusCode);
    }

解决方案行之有效。谢谢Nicolas VERHELST...
    [Test]
    public async Task Test1Async()
    {
        var jsonData = json;
        var client = new RestClient(endpoint);
        var request = new RestRequest();
        request.AddStringBody(jsonData, ContentType.Json);
        var response = await client.ExecutePostAsync(request);
        Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
    }
1个回答

11

嗨,Nicolas,感谢您的回复。是的,这个测试的目的是发送一个无效的地理位置格式,API将返回错误400和以下JSON验证错误。{ "messages": [ "Invalid latitude : -91", "Invalid longitude : 181", "Invalid latitude : 91", "Invalid longitude : -181" ] }所以我的测试是关于断言它是否返回400。但是测试没有达到断言语句。 - UmeshB
哦,所以只需要添加一个try catch吗?还是使用ExecutePostAsync?看看这里的表格:https://restsharp.dev/error-handling.html(你可以看到一些方法在错误状态下会抛出异常,而有些则不会)。 - Nicolas VERHELST

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接