我正在使用Karate验证GET请求的整个json响应 .
以下是来自请求的示例json响应(我只显示了两个项目元素)
[
{
"items": [
{
"createdById": "ADMIN",
"createdByName": "ADMIN",
"changedByName": "ADMIN",
"oid": "121212fgfg2123",
"links": {
"self": {
"href": "/internal/organiz/12345"
},
"subcom": []
},
"name": "NewETLTesting"
},
{
"createdById": "ADMIN",
"createdByName": "ADMIN",
"changedByName": "ADMIN",
"oid": "1212dfffg45",
"links": {
"self": {
"href": "/internal/organiz/5a6e0"
},
"subcom": []
},
"name": "FromKarateModified"
}
]
}
]
以下是我尝试验证的方法:
And match response.*.* ==
"""
{
"createdById" : '#string',
"createdByName" : '#string',
"changedByName" : '#string',
"oid" : '#string',
"links" : '#object',
"name" : '#string'
}
"""
但是,我收到一个断言错误: reason: actual value is not map-like
. 如果我尝试在花括号周围放置方括号,我会得到 reason: actual and expected arrays are not the same size
. 此外,我试图像 $.[*].
等响应,但无法让它工作 .
提前致谢!!
2 回答
您需要注意您的JSON结构并更好地理解JsonPath . 您可以剪切并粘贴以下内容并查看其工作情况:
以下Schema将正确验证整个响应
你可以参考以下链接:karate : Complex JSON Schema matching