我的实际api响应是
{
"data": {
"0000164": {
"2019-02-11": {
"MAPLE": 5,
"OAK": 15
}
}
},
"request_data": null,
"status": 200
}
这是我期望的api响应
{
"data": {
"0000164": {
"2019-02-11": {
"MAPLE": 5,
"OAK": 15
}
}
},
"status": 200
}
如果您发现我不希望我的api响应包含“ request_data” 字段或除预期之外的其他任何字段,则为
如何确保我的api不返回任何垃圾键值对
当前,这就是我的验证方式
And match $.data.0000164.2019-02-11.MAPLE == 5
And match $.data.0000164.2019-02-11.OAK == 15
答案 0 :(得分:1)
如果您知道响应中所有期望的键,则可以为此编写期望的 schema ,并将其match
写为==
来严格验证期望的键。
例如,在上述情况下,
{
"data": {
"0000164": {
"2019-02-11": {
"MAPLE": "#number",
"OAK": "#number"
}
}
},
"status": 200
}
还有许多其他方法,例如从JSON检索所有密钥并查找意外的密钥。
答案 1 :(得分:1)
要专门检查是否不存在request_data
:
* match response.request_data == '#notpresent'
我不明白您的第二个问题,这不是空手道的默认设置吗?
* match response ==
"""
{
data: '#object',
status: '#number'
}
"""
请仔细阅读有关模糊匹配的部分:https://github.com/intuit/karate#fuzzy-matching