REST-assured:验证 JSON 对象是否包含列表中的所有字符串

问题描述 投票:0回答:3

我构建了一个包含 JSON 对象主体字段名称的列表,如下所示:

String

然后我使用 REST-assured 获取 JSON 格式的响应,如下所示:

List<String> fieldNames = new ArrayList<String>();

我的列表包含 
{ "id": 11, "name": "CoolGuy", "age": "80", }

id
name
。如何验证 JSON 字段是否与列表中的字符串匹配,
without
,具体取决于它们的顺序。 我只知道如何验证它是否包含一个

age

。这是我使用的整个 JUnit 测试方法:

String


java json rest-assured hamcrest
3个回答
0
投票

@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");



0
投票

DocumentContext parsedJson = JsonPath.parse(response.getBody().asString()); assertThatJson(parsedJson).field("['id']").isEqualTo("11");

你可以为它创建任何你想要的构造函数。我认为您的对象可能比上面显示的要复杂得多。然而,这是一种更简单的断言平等方法,并且很容易重用。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.