Wiremock Standalone с динамическим откликом - PullRequest
0 голосов
/ 17 октября 2018

У меня есть автономный экземпляр сервера Wiremock.Отображения хранятся в виде файлов JSON в папке сопоставлений.У меня есть запрос POST, который должен вернуть динамический идентификатор (целое число) в ответе.Есть ли способ настроить это в файле json?

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Похоже, что это идеальный вариант использования Трансформатор с корпусом Wiremock от OpenTable .

Его можно легко интегрировать с автономным сервером следующим образом:

java -cp "wiremock-body-transformer-1.1.6.jar:wiremock-2.3.1-standalone.jar" com.github.tomakehurst.wiremock.standalone.WireMockServerRunner --verbose --extensions com.opentable.extension.BodyTransformer

И позволяет вам легко указать динамическую переменную, которую вы хотите сопоставить вresponse.

Вот пример получения случайного целого числа без необходимости что-либо указывать в запросе, однако, если вам нужно сопоставить конкретную переменную в запросе с ответом, то это также очень выполнимо с этимрасширение и многочисленные примеры можно найти в файле readme.

{
    "request": {
        "method": "POST",
        "urlPath": "/transform",
    },
    "response": {
        "status": 200,
        "body": "{\"randomInteger\": \"$(!RandomInteger)\"}",
        "headers": {
            "Content-Type": "application/json"
        },
        "transformers": ["body-transformer"]
    }
}
0 голосов
/ 03 декабря 2018

Чтобы приведенные выше примеры работали, мне пришлось запустить автономную банку с --global-response-templating.Затем я увидел, например, что {{now}} работает, что я и хотел.Не уверен, что в документации это указано - я попробовал всегда полезный --help.

0 голосов
/ 21 октября 2018

В WireMock есть несколько вспомогательных функций шаблона ответа для генерации случайных строк .В приведенном ниже примере я использую один для генерации UUID, но существует несколько других вариантов.

Файл сопоставления: dynamic_id.json

{
  "request": {
    "method": "POST",
    "url": "/dynamic_id"
  },
  "response": {
    "headers": {
      "Content-Type": "application/json"
    },
    "status": 200,
    "body": "{{randomValue type='UUID'}}",
    "transformers": ["response-template"]

  }
}

Использование пустого POST http://wiremock/dynamic_id вернет идентификатор, подобный: c2e6bf32-c9a3-45c0-b988-94fad04cc7a2.

Запустить WireMock:

java -jar wiremock-standalone-2.18.0.jar --port 8181 --verbose --local-response-templating
...