Этого можно добиться с помощью функции сценария 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 должен работать.