#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 }