因此,基本上,我已经构建了一个列表,其中包含JSON对象的主体字段名称的字符串。
类似这样的东西:
List<String> fieldNames = new ArrayList<String>();
然后,我使用Rest-assured来获取JSON格式的响应,如下所示:
{
"id": 11,
"name": "CoolGuy",
"age": "80",
}
因此我的列表包含“ id”,“ name”和“ age”。如何验证JSON字段与列表中的那些字符串匹配。没有根据他们的顺序。
我只知道如何验证它包含一个String,这是我使用的整个JUnit测试方法:
@Test
public void verifyJSONMatch() {
given().auth().basic("user", "pass").when()
.get(getRequestURL).then().body(containsString("id"));
}
有什么建议吗?
答案 0 :(得分:0)
您可以提取响应
ResponseOptions response = given().spec(request)
.get("/url_path");
然后解析一个json
DocumentContext parsedJson = JsonPath.parse(response.getBody().asString());
assertThatJson(parsedJson).field("['id']").isEqualTo("11");
答案 1 :(得分:0)
将响应提取为Java对象,然后断言所提取的对象等于您在JSON中具有的对象,这可能是最简单的。
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);
您可以根据需要创建构造函数。我认为您的对象可能比上面显示的复杂得多。但是,这是断言平等的一种简单得多的方法,并且很容易重用。