可以配置wiremock在特定数量的先前响应之后在相同的URL和相同的请求上发送不同的响应吗?
For example:
1st request -> 503 response
2nd request -> 503 response
3rd request -> 503 response
4th request -> 200 response
这会在启动过程中模拟不可用的服务。并且当它启动并运行时,它会响应200状态。
您可以使用WireMock的Scenario feature.实现此目的,可能的设置可能类似于...
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)));
[在上面,您通过定义方案名称和初始行为来设置方案(所有方案以STARTED
状态开始。)第一次运行到"/foo"
端点后,我们返回503状态,方案的状态更改为“一次尝试”。第二次运行到"/foo"
端点后,我们再次返回503状态,并且该场景的状态更改为“两次尝试”。如果再次点击"/foo"
端点,我们将返回200状态,而不更改场景状态。
一个警告是,您需要知道想要返回特定状态的确切时间,因此,您将无法随机返回503。但是,如果您确定在返回200之前总是需要特定数量的响应,那么场景应该可以工作。