Как использовать условное выражение if в заглушке WireMock JSON?

Мне нужно использовать if в моей заглушке. Я знаю, что есть разные сценарии, которые вы можете создать с помощью шаблонов тела, но в моем случае это не работает, потому что я получаю переменное количество объектов в полезной нагрузке, и мне нужно использовать цикл for для проверки каждого из них. Итак, полезная нагрузка моего запроса будет выглядеть примерно так:

[
   { "todo_id": 1 },
   { "todo_id": null },
   { "todo_id": 3 }
]

Я хочу ответить todo_id там, где он был, и ответить случайным целым числом, где есть null, поэтому мои данные ответа пока следующие:

"response": {
    "status": 200,
    "body": "[ {{#each (jsonPath request.body '$') as |todo|}}
                  { \"todo_id\":
                      {{#if (todo.todo_id == null) }}
                          1{{randomValue length=1 type='NUMERIC'}}
                      {{else}}
                          {{todo.todo_id}}
                      {{/if}}
                },
            {{/each}} ]"
}

Я знаю, что вы не можете так расставлять тело, но я сделал это, чтобы было легче читать код.

Таким образом, для каждого цикла определенно работает, я пробовал его без оператора if, и он отлично работает. Но я не могу заставить оператор if работать для меня.

Есть идеи, как реализовать что-то подобное?


person Vilius Gudžiūnas    schedule 31.07.2020    source источник


Ответы (1)


Хорошо, я получил ответ на этот вопрос в группе Google для WireMock.

По-видимому, для сравнения значений вы должны использовать оператор eq.

Итак, изменив условную часть кода, чтобы она выглядела так

{{#eq todo.todo_id null}}
    1{{randomValue length=1 type='NUMERIC'}}
{{else}}
    {{todo.todo_id}}
{{/eq}}

решил проблему.

person Vilius Gudžiūnas    schedule 01.08.2020