wiremock-stublisted
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