Шаблон ответа для статического файла Json - PullRequest
1 голос
/ 19 июня 2019

Я использую WireMock в Java для заглушки для запроса POST. Запрос возвращает файл тела json, который хранится в моей локальной сети. Заглушка выглядит так:

wireMockServer.stubFor(get(urlMatching("/v1/invoices/.*"))
            .willReturn(aResponse()
                .withStatus(200)
                .withBodyFile("testgetupgradeprorationamount/stubThree")));

Часть файла тела ответа "stubThree" выглядит следующим образом:

"id": "ii_1EmM93Htp4Kkdrs8",
                "object": "line_item",
                "amount": 9600,
                "currency": "usd",
                "description": "Remaining time on 3 × Business after 17 Jun 2019",
                "discountable": false,
                "invoice_item": "ii_1EmM93HtpLyYzpmOC4Kkdrs8",
                "livemode": false,
                "metadata": {
                },
                "period": {
                    "end": 1563374954,
                    "start": 1560782957
                }

URL-адрес запроса имеет несколько параметров и выглядит следующим образом:

/v1/invoices/?subscription_items[0][quantity]=3&subscription_proration_date=1560892137&customer=cus_FHNIIE4b8LH7qL"

Заглушка работает нормально, но моя цель - дать динамический ответ с использованием шаблонов ответа. Я хочу обновить поле «start» только файла json, используя значение «subscription_proration_date» из URL-адреса запроса.

Я изменил начальное поле и заглушку следующим образом:

"period": {
                    "end": 1566053354,
                    "start": "{{request.query.subscription_proration_date}}"
                },

wireMockServer.stubFor(get(urlMatching("/v1/invoices/.*"))
            .willReturn(aResponse()
                .withStatus(200)
                .withBodyFile("testgetupgradeprorationamount/stubThree")
                .withTransformers("response-template")));




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

Заранее спасибо!

1 Ответ

1 голос
/ 19 июня 2019

, поэтому я смог решить мою проблему. Проблема заключалась в том, что я не добавил правильное расширение к своему экземпляру WireMockServer:

.extensions(new ResponseTemplateTransformer(false));

Если логическое значение равно false, вам дополнительно нужно указать преобразователь для каждой заглушки, как я делал выше. В противном случае расширение применяется ко всем заглушкам.

...