我在使用 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));
这是我第一次使用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));