Сопоставление пар ключ-значение в запросе в сценарии Karate Netty

Я пишу функции для службы имитации Karate Netty и пытаюсь использовать сценарий для сопоставления пары ключ-значение в запросе.

Например:

В запросе, подобном этому, который имеет вложенный массив объектов, я хочу, чтобы эта функция срабатывала, когда любое из значений Id равно нулю:

{
    "Array": [

        {
            "Id": "legitId"
        },
        {
            "Id": null
        }
    ],
}

Сценарий: pathMatches ('путь / к / моей / конечной точке') && methodIs ('сообщение') && request.Array.contains ('Id': null)

В документации говорится, что я могу использовать JS-выражения в сценарии, но у меня было много проблем с поиском того, что нашорн может проанализировать, что может это сделать. Я пробовал JSON.stringify и indexOf, некоторые, синтаксис, используемый для сопоставления в тесте карате, все равно не повезло. Я также пробовал использовать подстановочный знак для индекса Array, чтобы сказать что-то вроде Array [*]. Id == null, но это тоже не работает.


person Scott MacDonald    schedule 28.08.2020    source источник


Ответы (1)


Хорошие новости, в Karate 0.9.6 для этого можно использовать JsonPath и karate.match():

Scenario: karate.match("request.Array[*].Id contains null").pass

Для получения дополнительных сведений: https://github.com/intuit/karate/issues/1202#issuecomment-653632397

А также посмотрите этот другой ответ, чтобы узнать об использовании настраиваемой функции. определены в Background, чтобы при необходимости упростить эту задачу: https://stackoverflow.com/a/59415796/143475

person Peter Thomas    schedule 28.08.2020
comment
Потрясающе. Это сделало мою неделю Питер. Спасибо! - person Scott MacDonald; 28.08.2020