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

标签 wiremock

在特定数量的先前响应之后,是否可以配置 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 状态,将 Scenario 的状态更改为“两次尝试”。如果我们点击 "/foo"再次访问端点,我们将返回 200 状态,并且不会更改 Scenario 状态。

一个警告是您需要知道您想要返回特定状态的确切次数,因此它不允许您随机返回 503。但是,如果您确定在返回 200 之前总是需要特定数量的响应,那么场景应该有效。

关于wiremock - 如何配置wiremock在达到先前的请求计数后发送不同的响应(相同的url和请求)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60003551/

相关文章:

linux - 使用 crontab 启动 wiremock-standalone 时出现问题

Wiremock:根据请求参数选择正文文件名

java - 解析wireMock中的动态路径

quarkus - 单独的 wiremocks QuarkusTestResource

java - 使用 WireMock 和 Eureka 的 Spring Boot 集成测试失败,返回 "No instances available"

java - SSL 握手异常 : no cipher suites in common using asynchttpclient and wiremock using self signed certificate

java - 我可以在录制时为 WireMock 指定一个 --proxy-all 参数以匹配任何网站吗?

spring - Wiremock 为 Spring Cloud Contract stub 运行器返回错误的内容类型

linux - 无法在 WireMock 中访问 _admin

regex - Wiremock withQueryParam 与正则表达式不匹配