Как настроить Wiremock для отправки разных ответов (одинаковые URL и запросы) после достижения предыдущего количества запросов? - PullRequest
1 голос
/ 31 января 2020

Можно настроить Wiremock для отправки разных ответов на один и тот же URL и один и тот же запрос после определенного количества предыдущих ответов?

For example: 
1st request -> 503 response
2nd request -> 503 response
3rd request -> 503 response
4th request -> 200 response

Это имитирует недоступную службу во время запуска. И когда он запущен и работает, он отвечает 200 статусом.

1 Ответ

1 голос
/ 31 января 2020

Этого можно добиться с помощью функции сценария WireMock . Потенциальная настройка может выглядеть примерно так ...

stubFor(get(urlEqualTo("/foo")).inScenario("Test Scenario")
    .whenScenarioStateIs(STARTED)
    .willReturn(aResponse().withStatus(503))
    .willSetStateTo("One Attempt"));
stubFor(get(urlEqualTo("/foo")).inScenario("Test Scenario")
    .whenScenarioStateIs("One Attempt")
    .willReturn(aResponse().withStatus(503))
    .willSetStateTo("Two Attempts"));
stubFor(get(urlEqualTo("/foo")).inScenario("Test Scenario")
    .whenScenarioStateIs("Two Attempts")
    .willReturn(aResponse().withStatus(200)));

В приведенном выше сценарии вы настраиваете определение имени сценария и начального поведения (все сценарии ios начинаются в состоянии STARTED.) После первого запуска в конечную точку "/foo" мы возвращаем состояние 503, и состояние сценария изменяется «Одна попытка». После второго запуска в конечную точку "/foo" мы снова возвращаем состояние 503, и состояние сценария изменяется на «Две попытки». Если мы снова достигнем конечной точки "/foo", мы вернем статус 200, а не изменим состояние сценария.

Одно предостережение: вам нужно знать точное количество раз, когда вы хотите вернуть определенный c статус, поэтому он не позволит вам вернуть 503 случайно. Но если вы уверены, что вам всегда нужно определенное количество ответов c, прежде чем просто вернуть 200, тогда сценарий ios должен работать.

...