Json 如何使用空手道放置逻辑和断言动态数据
这是我对一个特定请求的一个答复Json 如何使用空手道放置逻辑和断言动态数据,json,karate,Json,Karate,这是我对一个特定请求的一个答复 { "data": { "foo": [{ "total_value":200, "applied_value": [{ "type": "A", "id": 79806, "value": 200 }] }] } } 这是我对同一请求的另一个回复
{
"data": {
"foo": [{
"total_value":200,
"applied_value": [{
"type": "A",
"id": 79806,
"value": 200
}]
}]
}
}
这是我对同一请求的另一个回复
{
"data": {
"foo": [{
"total_value":300,
"applied_value": [{
"type": "A",
"id": 79806,
"value": 200
},
{
"type": "B",
"id": 79809,
"value": 100
}
]
}]
}
}
我不确定在哪种情况下我会得到哪种回应
所以用例是
无论何时应用值中有2个值添加两个值并断言
只要应用值中只有1个值,就直接断言这里有一个可能的解决方案:
* def adder = function(array) { var total = 0; for (var i = 0; i < array.length; i++) total += array[i]; return total }
* def response =
"""
{
"data": {
"foo": [{
"total_value":300,
"applied_value": [{
"type": "A",
"id": 79806,
"value": 200
},
{
"type": "B",
"id": 79809,
"value": 100
}
]
}]
}
}
"""
* def expected = get[0] response..total_value
* def values = $response..value
* def total = adder(values)
* match expected == total
* def total = 0
* def add = function(x){ karate.set('total', karate.get('total') + x ) }
* eval karate.forEach(values, add)