我构建了一个包含 JSON 对象主体字段名称的列表,如下所示:
String
然后我使用 REST-assured 获取 JSON 格式的响应,如下所示:
List<String> fieldNames = new ArrayList<String>();
我的列表包含
{
"id": 11,
"name": "CoolGuy",
"age": "80",
}
、
id
和 name
。如何验证 JSON 字段是否与列表中的字符串匹配,without,具体取决于它们的顺序。 我只知道如何验证它是否包含一个
age
。这是我使用的整个 JUnit 测试方法:
String
@Test
public void verifyJSONMatch() {
given()
.auth()
.basic("user", "pass")
.when()
.get(getRequestURL)
.then()
.body(containsString("id"));
}
然后解析一个json
ResponseOptions response = given().spec(request)
.get("/url_path");
DocumentContext parsedJson = JsonPath.parse(response.getBody().asString());
assertThatJson(parsedJson).field("['id']").isEqualTo("11");
你可以为它创建任何你想要的构造函数。我认为您的对象可能比上面显示的要复杂得多。然而,这是一种更简单的断言平等方法,并且很容易重用。
MyObject expectedObject = new MyObject(11, "CoolGuy", "80");
MyObject myObject =
given().auth().basic("user", "pass")
.when().get(getRequestURL)
.then().extract().response().as(MyObject.class);
assertEquals(expectedObject, myObject);
查看这个库:https://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html