【发布时间】:2020-02-25 15:24:02
【问题描述】:
在开发 RestAssured 时,我遇到了序列化和反序列化(POJO 类)的概念来读取和验证响应。我浏览了一些教程,并能够根据我的回复创建 POJO 类。
但是,当我在测试中使用 POJO 类引用时,我无法将 then() 块用于不同的断言。下面的细节可能会更清楚一些:
没有 POJO 的测试方法:
public void listUsers() {
RestAssured.baseURI="https://reqres.in/";
Response res = RestAssured.given()
.contentType("application/json")
.queryParam("page", 2)
.when()
.get("/api/users")
.then()
.assertThat().statusCode(200).and()
.body("page", Matchers.equalTo(2)).and()
.body("total", Matchers.greaterThanOrEqualTo(1))
.body("data.email", Matchers.hasItem("george.edwards@reqres.in"))
.extract().response();
JsonPath jsonpath = new JsonPath(res.asString());
System.out.println(jsonpath.get("data[0].email"));
}
使用 POJO 的测试方法:
public void listUserswithPOJO() {
RestAssured.baseURI="https://reqres.in/";
ListUsers res = RestAssured.given()
.contentType("application/json")
.queryParam("page", 2)
.when()
.get("/api/users").as(ListUsers.class);
System.out.println(res.getData().get(1).getEmail());
}
测试类:
@Test
public void listUsersTest() {
ReqResApi TS1 = new ReqResApi();
TS1.listUserswithPOJO();
}
我想在使用 POJO 类时保持 then 块的断言不变。当我在 as(ListUser.class) 之后尝试这样做时,它会给出编译错误,即未为 ListUser 类定义 then()。
有什么方法可以在我的放心测试中同时使用 POJO 类和 then() 块。
【问题讨论】:
标签: rest rest-assured