2017-05-08 58 views
1

我正在使用rest-assured来测试其余api。我有一个返回一个对象数组的json响应。我想验证它包含具有特定值的测试的对象。请检查下面的例子:Rest-Assured - json的主体声明,用于列表中的值集合

例JSON:

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

我怎样写身体断言,这样我可以检查的位置无关我有一个条目:

值1 &值2中每个相应字段 和值3的另一个条目3 & value4。

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

回答

0

取决于你的意思是“不管位置”。

如果你的意思是,无论位置contentsfield2之前,你可以做像这样的field1指定这一点很重要:

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

如果你如果field2之前,你可以像field1指定不在乎这个:

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

你可以阅读“根路径”here