我在使用 REST Assured 的测试中收到 java.lang.AssertionError

I'm receiving an java.lang.AssertionError in a test using REST Assured

这是我第一次使用Gson和REST Assured,老实说我真的很挣扎。 我需要验证内容类型是否为 JSON,确实如此,但测试失败并显示以下消息,您将在下面看到。 我没有写我所有的导入,如果需要请告诉我,我会提供它们。

这是我写的代码:

package Gson;
    
public class TestBase {
    
    public RequestSpecification httpRequest;
    public Response response;
    public JsonPath jsonPathEvaluator;
    
    
    @BeforeMethod
    public void before_method(){
       RestAssured.baseURI = "https://reqres.in/";
       httpRequest = RestAssured.given();
    }

    @Test
    public void test1(){
        Reqres reqres = new Reqres("Olivera","tester");    
        httpRequest.header("Content-Type", "application/json");
        httpRequest.body(new Gson().toJson(reqres));
        response = httpRequest.post("/api/users");
    
        jsonPathEvaluator = response.jsonPath();
        Assert.assertEquals(response.statusCode(), 201);
        Assert.assertEquals(response.header("Content-Type"),("application/json"));
        Assert.assertEquals(jsonPathEvaluator.get("name").toString(),"Olivera");
    
    }
    
}

这是我得到的回复:

    java.lang.AssertionError: 
    Expected :application/json
    Actual   :application/json; charset=utf-8

我该如何解决这个问题?

问题是 Rest-Assured 自动添加 charset=utf-8,可能会返回响应。

您可以按如下方式声明它们:

Assert.assertEquals(response.header("Content-Type"),("application/json; charset=utf-8"));

或在请求 header:

中禁用自动 charset=utf-8
RestAssured.config = RestAssured.config(config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false));