如何确保在响应中没有返回任何多余的字段

时间:2018-12-11 12:08:33

标签: karate

我的实际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

2 个答案:

答案 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