← ClaudeAtlas

wiremock-stublisted

WireMock stub conventions for HTTP integration tests. Stub mapping JSON format, scenario-based stateful stubs, request matching strategies, fault injection. Auto-loads when editing `src/test/**/*Wiremock*.java` or `**/__stubs/*.json`.
taipt1504/claudehut · ★ 1 · Testing & QA · score 64
Install: claude install-skill taipt1504/claudehut
# WireMock Stub external HTTP services for integration tests. ## Quick start ```java @ExtendWith(WireMockExtension.class) class PaymentClientTest { @RegisterExtension static WireMockExtension wireMock = WireMockExtension.newInstance() .options(wireMockConfig().dynamicPort()) .build(); @Test void shouldChargeCard() { wireMock.stubFor(post(urlEqualTo("/v1/charges")) .withRequestBody(matchingJsonPath("$.amount", equalTo("1000"))) .willReturn(aResponse() .withStatus(200) .withHeader("Content-Type", "application/json") .withBody(""" {"id":"ch_123","status":"succeeded"} """))); PaymentClient client = new PaymentClient(wireMock.baseUrl()); ChargeResult result = client.charge(new ChargeRequest(1000, "usd", "tok_x")); assertThat(result.id()).isEqualTo("ch_123"); wireMock.verify(postRequestedFor(urlEqualTo("/v1/charges"))); } } ``` ## Stub mappings as JSON (declarative) `src/test/resources/__stubs/payment-success.json`: ```json { "request": { "method": "POST", "url": "/v1/charges" }, "response": { "status": 200, "headers": { "Content-Type": "application/json" }, "jsonBody": { "id": "ch_123", "status": "succeeded" } } } ``` Detailed: `references/stub-mapping-format.md`, `references/scenarios.md`. ## Assets - `assets/templates/stub-mapping.json.tmpl` - `assets/templa