Я хочу определить общее количество вхождений «id» в следующей строке JSON.
Есть ли в каратэ быстрый способ сделать это?
Если бы это было на верхнем уровне, я мог бы сделать response.result.length, но они находятся во встроенных элементах «теста». Я мог бы сделать это в javascript, но просто интересно, есть ли у каратэ более быстрый метод.
{
"result": [
{
"test": [
{
"id": "x",
"price": "£5.00"
},
{
"id": "y",
"price": "£10.00"
},
{
"id": "z",
"price": "£10.00"
},
{
"id": "a",
"price": "£10.00"
}
]
},
{
"test": [
{
"id": "b",
"price": "£5.00"
},
{
"id": "c",
"price": "£10.00"
}
]
}
]
}
Ну вот:
* def ids = $..id
* assert ids.length == 6
Потратьте некоторое время, чтобы прочитать о JsonPath в документации.
@Мэтт рад помочь. вот еще один интересный пример: twitter.com/getkarate/status/1316747296382488586
Большое спасибо, Питер... это проще, чем функция Javascript, которую я написал: * def countDeliverySlots = """ function (response) { let totalNumberOfSlots = 0; totalNumberOfSlots = totalNumberOfSlots+response.result[i].deliverySlots.length } return totalNumberOfSlots;} """