API-функция карате / ключевое слово для замены ключа заполнителя JSON переданным аргументом - PullRequest
1 голос
/ 29 мая 2019

Как при замене ключа JSON на значение, определенное в Background, в тестировании Webservice с использованием API-интерфейса Karate?

Фон: Я получаю доступ к конечной точке REST API через API-интерфейс Karate.Это возвращает мне глубоко вложенный JSON.Как только я получу ответ, мне нужно оценить, содержит ли ответ мой параметр в качестве ключа и значение ключа не равно нулю.Ниже приведен мой код

Background:
* def execParam = 'ArgumentProvided'

@MyTestCase
Given url myUrl + '/' + execParam
When method get
Then status 200
And match response.subElement contains {execParam : '#notnull'}

С приведенным выше кодом утверждения не выполняются с ошибкой

expected: {execParam:'#notnull'}, reason: actual value does not contain expected

Я ожидаю, что код будет подтверждать {'ArgumentProvided':'#notnull'}.Код в настоящее время утверждает {execParam:'#notnull'}

Я пытался заменить execParam на #execParam, $.execParam и #[$.execParam], и ни один из них не заменяет значение.Поэтому нужна помощь в замене ключа JSON

1 Ответ

2 голосов
/ 29 мая 2019

Для этого интересного варианта использования вы можете создать ожидаемый JSON на лету так:

* def execParam = 'ArgumentProvided'
* def response = { subElement: { ArgumentProvided: 'foo' } }
* def expected = {}
* eval expected[execParam] = '#notnull'
* match expected == { ArgumentProvided: '#notnull' }
* match response.subElement contains expected
...