'match each' 数组中的一个元素

'match each' one element in the array

我的问题是关于 'match each' 的选择性断言。 下面是一个示例 json body:

* def data = 


"""
{
 "companies": [
    {
     "companyDetails": {
        "name": "companyName",
        "location": {
            "address": "companyAddress",
            "street": "companyStreet"
         }
       }
    },
    {
     "companyDetails": {
        "name": "companyName",
        "location": {
            "address": "companyAddress",
            "street": "companyStreet"
         }
       }
    }
  ]
}
"""

我们如何断言响应中的每个 'companyDetails' 对象是否包含某个元素,例如只有名字?

* match each data.companies contains { companyDetails: { name: '#notnull' } }

当我使用上面的步骤时,这个 returns 下面的错误:

$[0] | actual does not contain expected | all key-values did not match, expected has un-matched keys

那么,有什么方法可以让我们在这个对象中只断言一个字段吗?例如,断言每个 companyDetails 对象是否包含名称,但忽略其他元素,如位置?谢谢

这会起作用:

* match each data.companies == { companyDetails: { name: '#notnull', location: '#notnull' } }

这也适用:

* match data.companies contains deep { companyDetails: { name: '#notnull' } }

有时在比赛前转换 JSON 会更好:

* match each data..companyDetails contains { name: '#notnull' }