Как динамически удалить ключ json в каратэ?

#karate

Вопрос:

Я пытаюсь удалить какой-то ключ json на основе условия. Ниже не сработало

  * def body
 * if (condition == 'true') remove body.path1.path2.key
(or)
 * def body = (condition == 'true')? (remove  body.path1.path2.key):body
 

Я также не уверен, почему приведенный ниже код выдает ошибку

 * def json = { a: 1,b:2 }
* def key = 'b'
* karate.remove('json', key)
 

Ошибка:
ошибка оценки (js): удаление(‘json’, ключ), java.lang.Исключение времени выполнения: неожиданный путь: b

Ответ №1:

Это сработает:

 * def json = { a: 1, b: 2 }
* def key = 'b'
* if (true) karate.remove('json', key)
* match json == { a: 1 }
 

Таково remove ключевое слово Каратэ, поэтому оно не будет работать при смешивании с JS.

Но движок JS в версии 1.0 и далее будет поддерживать delete ключевое слово JS. Так что вы можете делать такие вещи прямо сейчас:

 * def json = { a: 1, b: 2 }
* def key = 'b'
* if (true) delete json[key]
* match json == { a: 1 }