En outre partagé ici: https://github.com/tomakehurst/wiremock/issues/625Wiremock: réponses multiples pour la même URL et le même contenu?
J'écris un test d'intégration pour vérifier que mon application qui interagit avec une API REST traite les demandes infructueuses de façon appropriée. Pour ce faire, je souhaite simuler un scénario dans lequel une requête GET est effectuée deux fois sur un point de terminaison HTTP. La première fois, la demande échoue avec un code d'état de réponse de 500; deuxième fois, la demande est réussie avec un code d'état de réponse de 200. Prenons l'exemple ci-dessous:
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort()
.dynamicHttpsPort());
@Test
public void testRetryScenario(){
// First StubMapping
stubFor(get(urlEqualTo("/my/resource"))
.withHeader("Accept", equalTo("text/xml"))
.willReturn(aResponse()
.withStatus(500) // request unsuccessful with status code 500
.withHeader("Content-Type", "text/xml")
.withBody("<response>Some content</response>")));
// Second StubMapping
stubFor(get(urlEqualTo("/my/resource"))
.withHeader("Accept", equalTo("text/xml"))
.willReturn(aResponse()
.withStatus(200) // request successful with status code 200
.withHeader("Content-Type", "text/xml")
.withBody("<response>Some content</response>")));
//Method under test that makes calls to endpoint
doSomething();
Thread.sleep(5000);
//Verify GET request was made again after first attempt
verify(exactly(2), getRequestedFor(urlEqualTo("/my/resource")));
}
Y at-il un moyen d'éviter la 2e StubMapping de substitution de la première - pour faire en sorte que la première fois doSomething()
marques une demande, une réponse avec le code d'état 500 est retourné, et la deuxième fois, une réponse différente avec le code d'état 200 est retourné?
merci! c'est exactement ce dont j'avais besoin – rugden