Может быть, вы слишком обдумываете это, и того, что у вас есть, может быть достаточно. Все, что вам нужно сделать, это вернуть response
условно. Одним из советов является то, что каратэ может автоматически конвертировать XML в JSON, что удобно, потому что легче писать JSON -путь или операции фильтрации:
Вот пример кода, который может дать вам некоторые идеи:
* def structs = get[0] request..member
* def fun = function(x){ return x.name == 'a' && x.value == 'abc' }
* def test = karate.filter(structs, fun)
* if (test.length) karate.set('response', '<some>response</some>')
Полагаю, смысл в том, что вы пытаетесь выполнить нетривиальную условную обработку, поэтому код будет более сложным, чем обычно.
Вы можете использовать JSON -path вместо хака karate.filter()
, но выражение запроса может усложнить чтение IMO. Обратите внимание, что вы можете определить такую функцию, как getStructType()
в Background
- поместить все логики c, которые вы хотите, - и затем использовать ее в Scenario
HTTP-пути «маршрут» выражения.