温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to configure wiremock to send different responses (same url and requests) after reaching previou
wiremock

其他 - 如何配置Wiremock在到达之前发送不同的响应(相同的URL和请求)

发布于 2020-04-04 00:02:26

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

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

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

查看更多

提问者
madafaka
被浏览
44
agoff 2020-01-31 22:58

您可以使用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之前总是需要特定数量的响应,则场景应该可以工作。