我无法验证包含数组的模式,特别是当每个请求的对象数量不同时。
响应示例:
{
"name": "value",
"id": "value",
"arrayField": [],
"objects": [
{
"Field1": "value",
"Field2": false,
},
{
"Field1": "value",
"Field2": true,
}
]
}
请记住,另一个请求可能在对象数组中包含更多对象。另外,我确实需要检查 Field1 和 Field2 是否存在。
在功能文件中,我使用的是经典的:
def expectedSchema = read('path to json')
match response == expectedSchema
问题是,我在架构中尝试了多种解决方案,但总是收到错误: $ |不等于|实际不包含键 - '#array' (MAP:MAP) 或类似的东西。
如果对象数量不同,架构版本 1 将失败:
{
"name": "#string",
"id": "#string",
"arrayField": "#array",
"objects": [
{
"Field1": "#string",
"Field2": "#boolean"
},
{
"Field1": "#string",
"Field2": "#boolean"
}
]
}
架构版本 2 将因上述错误而失败:
{
"name": "#string",
"id": "#string",
"arrayField": "#array",
"objects": "#array"
"#array": [
"Field1": "#string",
"Field2": "#boolean"
]
}
有没有办法成功验证模式?
已在此解释:https://stackoverflow.com/a/61252709/143475
就我个人而言,我只会做一个
match each
。我的建议是团队不应该沉迷于尝试将验证压缩到一个模式中 - 当然不是“单一”模式。
* match each response.objects == { Field1: '#string', Field2: '#boolean' }