1

我正在使用 rest-assured 来测试一个 rest api。我有一个返回对象数组的 json 响应。我想验证它是否包含具有特定值测试的对象。检查以下示例:

示例 JSON:

{
    "contents" : [
         {  
              "field1" : "value1",
              "field2" : "value2"
         },
         {  
              "field1" : "value3",
              "field2" : "value4"
         }
    ]
}

我如何编写正文断言,以便我可以检查无论我有一个条目的位置如何:

每个相应字段中的 value1 和 value2 以及 value3 和 value4 的另一个条目。

...get ("/myEndpoint" )
.then()
.body ( "contents.?????", contains...)
4

1 回答 1

1

取决于您所说的“无论职位如何”。

如果您的意思是无论职位如何,contents但重要的是在您可以这样做field1之前指定:field2

when().
        get("/myEndpoint").
then().
        root("contents.any { it == ['field1':'%s', 'field2':'%s'] }").
        body(withArgs("value1", "value2"), is(true)).
        body(withArgs("value3", "value4"), is(true));

如果你不关心是否在你可以这样做field1之前指定:field2

when().
        get("/myEndpoint").
then().
        root("contents").
        body("", hasItems(hasEntry("field2", "value2"), hasEntry("field1", "value1")),
             "", hasItems(hasEntry("field1", "value3"), hasEntry("field2", "value4")));

您可以在此处阅读“根路径” 。

于 2018-01-17T09:56:41.187 回答