如何配置 wiremock 在达到先前的请求计数后发送不同的响应(相同的 url 和请求)?



是否可以将wiremock配置为在先前响应的特定计数后在同一URL和同一请求上发送不同的响应?

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

这将在启动期间模拟不可用的服务。当它启动并运行时,它会响应 200 状态。

您可以使用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)));

在上面,您将通过定义方案名称和初始行为来设置方案(所有方案都以STARTED状态开始。首次运行到"/foo"终结点后,我们返回 503 状态,并且方案的状态更改为"一次尝试"。第二次运行到"/foo"终结点后,我们再次返回 503 状态,并且方案的状态更改为"两次尝试"。如果再次命中"/foo"终结点,我们将返回 200 状态,并且不会更改方案状态。

需要注意的是,您需要知道要返回特定状态的确切次数,因此它不允许您随机返回 503。但是,如果您确定在返回 200 之前始终需要特定数量的响应,那么方案应该有效。

最新更新