karate - “匹配每个”数组中的一个元素
问题描述
我关于“匹配每个”的选择性断言的问题。下面是一个示例 json 正文:
* 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' } }
当我使用上述步骤时,这将返回以下错误:
$[0] | actual does not contain expected | all key-values did not match, expected has un-matched keys
那么,有没有什么方法可以在这个对象中只声明一个字段呢?例如,断言每个 companyDetails 对象是否包含 name,但忽略 location 等其他元素?谢谢
解决方案
这将起作用:
* 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' }
推荐阅读
- android - 如何在没有“全局操作”的情况下从另一个 nav_graph 导航到特定片段?
- android - 当 FragmentContainerView 内的应用栏时,如何在滚动时隐藏底部导航和应用栏
- firebase - 使用 Firebase Cloud Functions 从 api 获取数据?
- r - 如何解决:输入必须是任意长度的字符向量或字符向量列表,每个字符向量的长度为 1
- javascript - vanilla nodejs中的会话替代方案是什么
- graphql - 在 Apollo GraphQl Federation 中,如何在没有 @external 指令的情况下应用 @requires 逻辑?
- graphql - 我如何根据他们在 graphql 中查询的字段来响应客户?
- jquery - 如何使用 jQuery 重新找到动态加载链接的父级?
- javascript - html 元素不可见。它在那里,但它的尺寸为 0x18
- scala - Spark,如何将 AB,C 转换为 (A, List(B,C))