任务:
有3个endpoint:
第一个返回请求的随机数据到另外两个endpoint。
另外两个endpoint使用不同的DBs操作,但或多或少使用相似的数据。
我需要验证来自一个endpoint的响应是否匹配来自另一个endpoint的响应,两个endpoint发送相同的数据,但顺序不同。
例如。:
endpoint“A”:
{
"items": [
{
"field1": 111,
"array1": [
{
"field11": 102,
"field22": 231
},
{
"field11": 103,
"field22": 231
},
{
"field11": 102,
"field22": 256
},
{
"field11": 104,
"field22": 256
}
],
"field2": 122,
"array2": [
1,
2,
3
]
},
{
"field1": 211,
"field2": 222,
"field3": 233
}
]
}
endpoint“B”:
{
"items": [
{
"field1": 211,
"field2": 222,
"field3": 233
},
{
"field1": 111,
"array1": [
{
"field11": 104,
"field22": 256
},
{
"field11": 102,
"field22": 256
},
{
"field11": 103,
"field22": 231
},
{
"field11": 102,
"field22": 231
}
],
"field2": 222,
"array2": [
1,
2,
3
]
}
]
}
endpointA_response.items仅包含endpointB_response.items验证失败,因为它认为一个响应的内部数组1与另一个响应的数组1不匹配,因为数组项的顺序不同。
endpointA_响应。项[0]。array1仅包含endpointB_响应。项[1]。array1工作正常,但不是我需要的。无论顺序如何,我都需要比较整个响应。
是否有可能应用仅包含验证到对象的数组,其中包含可能具有不同顺序的项的数组?
你在正确的轨道上endpointA_response.items[0]. array1只包含endpointB_response.items[1]. array1
无论顺序如何,我都需要比较整个响应。
然后你必须做一些额外的工作。没有魔法。
我建议分类。在空手道1.0中,有一个Karate.sort()
API。例如,如果您确定field1
的值是唯一标识符
* def expected = karate.sort(responseA, x => x.field1)
然后,希望它能使事情协调一致,以便您可以进行匹配。
阅读此答案了解其他想法:https://stackoverflow.com/a/53120851/143475
我正在使用空手道JavaAPI处理Json对象。我将创建以下json: 当我尝试,我得到以下错误: json路径语法经过交叉检查是正确的,我可能缺少的任何其他点? 编辑:我正在使用v1。空手道核心1.0
我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象 这是显示单个物体的结果
如何从Jackson在中生成的json响应中排除所有空json对象、数组或空对象的数组? 我正在为一个客户端构建一个Spring Boot REST API。API向数据库发送请求,并且必须生成JSON响应。 DAO层发送本机SQL查询,并以列表形式接收巨大的DB结果。开发人员必须使用索引手动将此结果映射到Java对象(参见下面的代码) SQL查询返回大量空值(这些查询不能修改)。由于这些空值,只
我有以下两个响应,我需要检查(元素的顺序不同)。尝试了不同的事情,但没有任何结果。任何帮助都将不胜感激!
使用intuit/空手道的API测试之一, 预期的JSON是: API响应有两种可能。 第一个可能的实际JSON: 第二种可能的实际JSON: 同样,阵列元素的序列在实际响应中是不同的,因此遵循响应验证的方法随机抛出错误。 和响应== 有时错误被抛出为:错误:{Actual:response.config[0].abc,应为:response.config[0].qwe} 有时会抛出错误:错误:{
我想用包含其他对象的对象验证json响应的json模式。GET/persons/id请求的json响应示例,该请求将发送对象person: GET/人物请求将发送一个包含人物对象的数组。 验证功能示例(Validator.feature): 我不想在这个特性的末尾添加或 我想从我的主要功能调用模式验证功能,如下所示: 验证两个请求的响应。我需要将这个模式放在一个特性或json文件中,以便只有一个地