WireMock best practices
Help teams use WireMock effectively for HTTP dependency stubbing with stable, isolated tests.
What is covered in this Skill?
- Stub isolation: per-test registration,
resetAll(), avoiding leaked global stubs
- Request matching: method, path, headers, query, body patterns; when broad patterns are acceptable
- Responses: status, headers, JSON/XML bodies,
bodyFileName / classpath fixtures, fault simulation (delays, errors)
- Dynamic ports and propagating base URLs into the system under test
- Verification of outbound HTTP calls and debugging unmatched requests
- Clear delegation to framework integration-test skills for test class layout and extensions
Scope: Portable WireMock behavior only. For BaseIntegrationTest, WireMockExtension, and stack-specific integration tests, use @132-java-testing-integration-testing, @322-frameworks-spring-boot-testing-integration-tests, @422-frameworks-quarkus-testing-integration-tests, or @522-frameworks-micronaut-testing-integration-tests. For OpenAPI contract quality, use @701-technologies-openapi.
Constraints
Keep recommendations at the WireMock and HTTP-stub layer unless the user explicitly asks for framework integration. After editing this repository's XML sources, regenerate skills and verify the build.
- MANDATORY: Run
./mvnw compile or mvn compile before proposing Java or Maven changes in the same change set
- FRAMEWORK: Defer
@SpringBootTest / @QuarkusTest / @MicronautTest and extension setup to @132-java-testing-integration-testing or the matching 322 / 422 / 522 integration-test skill
- CONTRACTS: Defer OpenAPI document structure and linting to
@701-technologies-openapi
- MANDATORY: Regenerate skills with
./mvnw clean install -pl skills-generator after editing skill or system-prompt XML in this repo
- VERIFY: Run
./mvnw clean verify or mvn clean verify before promoting changes
- EDGE CASE: If the user goal is ambiguous, stop and ask a clarifying question before editing files or running project-wide commands
- EDGE CASE: If required context, files, credentials, or tools are missing, report the blocker explicitly and ask whether to proceed with setup or fallback guidance
- EDGE CASE: If requested changes conflict with project constraints or safety boundaries, explain the conflict and ask for user confirmation on the preferred trade-off
When to use this skill
- Design or review WireMock stubs (JSON mappings or Java DSL)
- Improve request matching, isolation, or reset strategy for HTTP mocks
- Add or fix verification of outbound HTTP calls to a WireMock server
- Debug flaky tests involving WireMock or unmatched request journals
- Stub external HTTP APIs in tests with stable fixtures and dynamic ports
Workflow
- Read reference and assess project context
Read references/702-technologies-wiremock.md and inspect current API/context artifacts before proposing changes.
- Gather scope and decide target improvements
Identify requested outcomes, constraints, and the minimum safe set of changes to apply.
- Apply technology-aligned changes
Implement or refactor artifacts following the reference patterns and project conventions.
- Run verification and report results
Execute appropriate checks and summarize what changed, what was verified, and any follow-up actions.
Reference
For detailed guidance, examples, and constraints, see references/702-technologies-wiremock.md.
1---2name: 702-technologies-wiremock3description: Use when you need framework-agnostic WireMock guidance — stub design, JSON or programmatic mappings, precise request matching, response bodies and faults, classpath fixtures, isolation and reset between tests, verification of calls, dynamic ports and base URLs, and avoiding flaky stubs — without choosing Spring Boot, Quarkus, or Micronaut. This should trigger for requests such as Design or review WireMock stubs (JSON mappings or Java DSL); Improve request matching, isolation, or reset strategy for HTTP mocks; Add or fix verification of outbound HTTP calls to a WireMock server; Debug flaky tests involving WireMock or unmatched request journals. Part of cursor-rules-java project4license: Apache-2.05---6# WireMock best practices
7
8Help teams use **WireMock** effectively for HTTP dependency stubbing with **stable, isolated** tests.
9
10**What is covered in this Skill?**
11
12- Stub **isolation**: per-test registration, `resetAll()`, avoiding leaked global stubs
13- **Request matching**: method, path, headers, query, body patterns; when broad patterns are acceptable
14- **Responses**: status, headers, JSON/XML bodies, `bodyFileName` / classpath fixtures, fault simulation (delays, errors)
15- **Dynamic ports** and propagating base URLs into the system under test
16- **Verification** of outbound HTTP calls and debugging unmatched requests
17- Clear **delegation** to framework integration-test skills for test class layout and extensions
18
19**Scope:** Portable WireMock behavior only. For **`BaseIntegrationTest`**, `WireMockExtension`, and stack-specific integration tests, use `@132-java-testing-integration-testing`, `@322-frameworks-spring-boot-testing-integration-tests`, `@422-frameworks-quarkus-testing-integration-tests`, or `@522-frameworks-micronaut-testing-integration-tests`. For **OpenAPI** contract quality, use `@701-technologies-openapi`.
20
21## Constraints
22
23Keep recommendations at the WireMock and HTTP-stub layer unless the user explicitly asks for framework integration. After editing this repository's XML sources, regenerate skills and verify the build.
24
25- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before proposing Java or Maven changes in the same change set
26- **FRAMEWORK**: Defer `@SpringBootTest` / `@QuarkusTest` / `@MicronautTest` and extension setup to `@132-java-testing-integration-testing` or the matching `322` / `422` / `522` integration-test skill
27- **CONTRACTS**: Defer OpenAPI document structure and linting to `@701-technologies-openapi`
28- **MANDATORY**: Regenerate skills with `./mvnw clean install -pl skills-generator` after editing skill or system-prompt XML in this repo
29- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` before promoting changes
30- **EDGE CASE**: If the user goal is ambiguous, stop and ask a clarifying question before editing files or running project-wide commands
31- **EDGE CASE**: If required context, files, credentials, or tools are missing, report the blocker explicitly and ask whether to proceed with setup or fallback guidance
32- **EDGE CASE**: If requested changes conflict with project constraints or safety boundaries, explain the conflict and ask for user confirmation on the preferred trade-off
33
34## When to use this skill
35
36- Design or review WireMock stubs (JSON mappings or Java DSL)
37- Improve request matching, isolation, or reset strategy for HTTP mocks
38- Add or fix verification of outbound HTTP calls to a WireMock server
39- Debug flaky tests involving WireMock or unmatched request journals
40- Stub external HTTP APIs in tests with stable fixtures and dynamic ports
41
42## Workflow
43
441. **Read reference and assess project context**
45
46Read `references/702-technologies-wiremock.md` and inspect current API/context artifacts before proposing changes.
47
482. **Gather scope and decide target improvements**
49
50Identify requested outcomes, constraints, and the minimum safe set of changes to apply.
51
523. **Apply technology-aligned changes**
53
54Implement or refactor artifacts following the reference patterns and project conventions.
55
564. **Run verification and report results**
57
58Execute appropriate checks and summarize what changed, what was verified, and any follow-up actions.
59
60## Reference
61
62For detailed guidance, examples, and constraints, see [references/702-technologies-wiremock.md](references/702-technologies-wiremock.md).