
Unit Test Wiremock Rest Api
- 1.7k installs
- 311 repo stars
- Updated June 22, 2026
- giuseppe-trisciuoglio/developer-kit
Provides patterns for unit testing external REST APIs using WireMock. Stubs API responses, verifies request details, simulates failures (timeouts, 4xx/5xx errors), and validates HTTP client behavior w
About
The unit test wiremock rest api skill Provides patterns for unit testing external REST APIs using WireMock. Stubs API responses, verifies request details, simulates failures (timeouts, 4xx/5xx errors), and validates HTTP client behavior without real network calls. Use when testing service integrations with external APIs or mocking HTTP endpoints. Documentation covers workflows, commands, and guardrails agents should follow when users invoke this capability. Key documented areas include Testing services calling external REST APIs; Stubbing HTTP responses for predictable test behavior; Testing error scenarios (timeouts, 5xx errors, malformed responses); Verifying request details (headers, query params, request body). Use when developers or agents need structured guidance for unit test wiremock rest api tasks with evidence grounded in the bundled SKILL.md rather than generic advice. Testing services calling external REST APIs Stubbing HTTP responses for predictable test behavior Testing error scenarios (timeouts, 5xx errors, malformed responses) Verifying request details (headers, query params, request body) **Add dependency**: WireMock in test scope (Maven/Gradle) **Register extensi.
- Testing services calling external REST APIs
- Stubbing HTTP responses for predictable test behavior
- Testing error scenarios (timeouts, 5xx errors, malformed responses)
- Verifying request details (headers, query params, request body)
- **Add dependency**: WireMock in test scope (Maven/Gradle)
Unit Test Wiremock Rest Api by the numbers
- 1,685 all-time installs (skills.sh)
- +57 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #430 of 2,184 Testing & QA skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
unit-test-wiremock-rest-api capabilities & compatibility
- Capabilities
- testing services calling external rest apis · stubbing http responses for predictable test beh · testing error scenarios (timeouts, 5xx errors, m · verifying request details (headers, query params · **add dependency**: wiremock in test scope (mave
- Use cases
- planning
What unit-test-wiremock-rest-api says it does
Testing services calling external REST APIs
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill unit-test-wiremock-rest-apiAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.7k |
|---|---|
| repo stars | ★ 311 |
| Security audit | 3 / 3 scanners passed |
| Last updated | June 22, 2026 |
| Repository | giuseppe-trisciuoglio/developer-kit ↗ |
How do I handle unit test wiremock rest api tasks with agent guidance?
Provides patterns for unit testing external REST APIs using WireMock. Stubs API responses, verifies request details, simulates failures (timeouts, 4xx/5xx errors), and validates HTTP client behavior w
Who is it for?
Teams needing documented unit test wiremock rest api workflows.
Skip if: Generic advice without reading bundled docs.
When should I use this skill?
Provides patterns for unit testing external REST APIs using WireMock. Stubs API responses, verifies request details, simulates failures (timeouts, 4xx/5xx errors), and validates HTTP client behavior w
What you get
Structured workflow from unit test wiremock rest api documentation applied to the user request.
- WireMock stub configurations
- JUnit test methods with error assertions
By the numbers
- Includes dedicated 4xx and 5xx error scenario testing patterns for REST APIs
Files
Unit Testing REST APIs with WireMock
Overview
Patterns for testing external REST API integrations with WireMock: stubbing responses, verifying requests, error scenarios, and fast tests without network dependencies.
When to Use
- Testing services calling external REST APIs
- Stubbing HTTP responses for predictable test behavior
- Testing error scenarios (timeouts, 5xx errors, malformed responses)
- Verifying request details (headers, query params, request body)
Instructions
1. Add dependency: WireMock in test scope (Maven/Gradle) 2. Register extension: @RegisterExtension WireMockExtension with dynamicPort() 3. Configure client: Use wireMock.getRuntimeInfo().getHttpBaseUrl() as base URL 4. Stub responses: stubFor() with request matching (URL, headers, body) 5. Execute and assert: Call service methods, validate results with AssertJ 6. Verify requests: verify() to ensure correct API usage
If stub not matching: Check URL encoding, header names, use urlEqualTo for query params.
If tests hanging: Configure connection timeouts in HTTP client; use withFixedDelay() for timeout simulation.
If port conflicts: Always use wireMockConfig().dynamicPort().
Examples
Maven Dependencies
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock</artifactId>
<version>3.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>Basic Stubbing and Verification
import com.github.tomakehurst.wiremock.junit5.WireMockExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static org.assertj.core.api.Assertions.assertThat;
class ExternalWeatherServiceTest {
@RegisterExtension
static WireMockExtension wireMock = WireMockExtension.newInstance()
.options(wireMockConfig().dynamicPort())
.build();
@Test
void shouldFetchWeatherDataFromExternalApi() {
wireMock.stubFor(get(urlEqualTo("/weather?city=London"))
.withHeader("Accept", containing("application/json"))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBody("{\"city\":\"London\",\"temperature\":15,\"condition\":\"Cloudy\"}")));
String baseUrl = wireMock.getRuntimeInfo().getHttpBaseUrl();
WeatherApiClient client = new WeatherApiClient(baseUrl);
WeatherData weather = client.getWeather("London");
assertThat(weather.getCity()).isEqualTo("London");
assertThat(weather.getTemperature()).isEqualTo(15);
wireMock.verify(getRequestedFor(urlEqualTo("/weather?city=London"))
.withHeader("Accept", containing("application/json")));
}
}See references/advanced-examples.md for error scenarios, body verification, timeout simulation, and stateful testing.
Best Practices
- Dynamic port: Prevents conflicts in parallel test execution
- Verify requests: Ensures correct API usage by the client
- Test errors: Cover timeouts, 4xx, 5xx scenarios
- Focused stubs: One concern per test
- Auto-reset:
@RegisterExtensionresets WireMock between tests - Never call real APIs: Always stub third-party endpoints
Constraints and Warnings
- Dynamic ports required: Fixed ports cause parallel execution conflicts
- HTTPS testing: Configure WireMock TLS settings if testing TLS connections
- Stub precedence: More specific stubs take priority over general ones
- Performance: WireMock adds overhead; mock at client layer for faster tests
- API changes: Keep stubs synchronized with actual API contracts
References
- WireMock Documentation
- WireMock Stubbing Guide
references/advanced-examples.md- Error scenarios, body verification, timeouts
WireMock Advanced Examples
Additional patterns for complex WireMock testing scenarios.
Error Scenario Testing (4xx/5xx)
@Test
void shouldHandleNotFoundError() {
wireMock.stubFor(get(urlEqualTo("/api/users/999"))
.willReturn(aResponse()
.withStatus(404)
.withBody("{\"error\":\"User not found\"}")));
ApiClient client = new ApiClient(wireMock.getRuntimeInfo().getHttpBaseUrl());
assertThatThrownBy(() -> client.getUser(999))
.isInstanceOf(UserNotFoundException.class)
.hasMessageContaining("User not found");
}
@Test
void shouldHandleServerError() {
wireMock.stubFor(get(urlEqualTo("/api/data"))
.willReturn(aResponse()
.withStatus(500)
.withBody("{\"error\":\"Internal server error\"}")));
ApiClient client = new ApiClient(wireMock.getRuntimeInfo().getHttpBaseUrl());
assertThatThrownBy(() -> client.fetchData())
.isInstanceOf(ServerErrorException.class);
}Request Body Verification
@Test
void shouldVerifyRequestBody() {
wireMock.stubFor(post(urlEqualTo("/api/users"))
.willReturn(aResponse()
.withStatus(201)
.withBody("{\"id\":123,\"name\":\"Alice\"}")));
ApiClient client = new ApiClient(wireMock.getRuntimeInfo().getHttpBaseUrl());
UserResponse response = client.createUser("Alice");
assertThat(response.getId()).isEqualTo(123);
wireMock.verify(postRequestedFor(urlEqualTo("/api/users"))
.withRequestBody(matchingJsonPath("$.name", equalTo("Alice")))
.withHeader("Content-Type", containing("application/json")));
}Timeout Simulation
@Test
void shouldHandleTimeout() {
wireMock.stubFor(get(urlEqualTo("/api/slow"))
.willReturn(aResponse()
.withFixedDelay(5000)
.withStatus(200)));
// Configure client timeout < 5000ms
assertThatThrownBy(() -> client.fetchSlowEndpoint())
.isInstanceOf(SocketTimeoutException.class);
}Partial Response Matching
@Test
void shouldMatchPartialRequestBody() {
wireMock.stubFor(post(urlEqualTo("/api/orders"))
.withRequestBody(matchingJsonPath("$.items[*]", equalTo("[1,2,3]")))
.willReturn(aResponse()
.withStatus(201)));
ApiClient client = new ApiClient(wireMock.getRuntimeInfo().getHttpBaseUrl());
client.createOrder(List.of(1, 2, 3));
wireMock.verify(postRequestedFor(urlEqualTo("/api/orders")));
}Scenarios (Stateful Behavior)
@Test
void shouldSupportStatefulScenarios() {
wireMock.stubFor(get(urlEqualTo("/api/status"))
.inScenario("OrderWorkflow")
.whenScenarioStateIs(STARTED)
.willSetStateTo("PROCESSING")
.willReturn(aResponse()
.withStatus(202)
.withBody("{\"status\":\"processing\"}")));
wireMock.stubFor(get(urlEqualTo("/api/status"))
.inScenario("OrderWorkflow")
.whenScenarioStateIs("PROCESSING")
.willSetStateTo("COMPLETED")
.willReturn(aResponse()
.withStatus(200)
.withBody("{\"status\":\"completed\"}")));
// First call
client.getOrderStatus();
wireMock.verify(getRequestedFor(urlEqualTo("/api/status"))
.inScenario("OrderWorkflow"));
// Second call
client.getOrderStatus();
wireMock.verify(getRequestedFor(urlEqualTo("/api/status")));
}Related skills
Forks & variants (1)
Unit Test Wiremock Rest Api has 1 known copy in the catalog totaling 21 installs. They canonicalize to this original listing.
- giuseppe-trisciuoglio - 21 installs
How it compares
Use this skill for Java WireMock error and verification patterns instead of generic mocking tutorials that skip 404 and 500 contract cases.
FAQ
What does unit test wiremock rest api do?
Provides patterns for unit testing external REST APIs using WireMock. Stubs API responses, verifies request details, simulates failures (timeouts, 4xx/5xx errors), and validates HTTP client behavior w
When should I invoke unit test wiremock rest api?
Provides patterns for unit testing external REST APIs using WireMock. Stubs API responses, verifies request details, simulates failures (timeouts, 4xx/5xx errors), and validates HTTP client behavior w
What are key capabilities?
Testing services calling external REST APIs
Is Unit Test Wiremock Rest Api safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.