【问题标题】:How to configure wiremock to send different responses (same url and requests) after reaching previous count of request?达到先前的请求计数后,如何配置wiremock以发送不同的响应(相同的url和请求)?
【发布时间】:2020-01-31 12:03:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: wiremock


    【解决方案1】:

    您可以使用 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 状态,并且 Scenario 的状态更改为“一次尝试”。第二次运行到"/foo"端点后,我们再次返回503状态,Scenario的状态变为“Two Attempts”。如果我们再次点击"/foo" 端点,我们将返回 200 状态,并且不会更改 Scenario 状态。

    需要注意的是,您需要知道您希望返回特定状态的确切次数,因此它不允许您随意返回 503。但是,如果您确定在返回 200 之前总是需要特定数量的响应,那么场景应该可以工作。

    【讨论】:

    • 谢谢。我知道wiremock中的场景。我想知道是否有像您定义请求数量而不是指定每个请求的配置。但是你的回答对我帮助很大。
    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多