wiremock-testcontainers-nodejs is a Typescript nodejs library that spins up
a WireMock
instance with Testcontainers. It provides a
fluent API to configure and start WireMock
containers, including support for loading mappings and files from recorded
Wiremock sessions.
pnpm add -D @hellaweb3/wiremock-testcontainers-nodejs testcontainersAssuming you placed your mappings in test/__mocks__/wiremock,
import { WiremockContainer } from "@hellaweb3/wiremock-testcontainers-nodejs";
describe("E2E Test", () => {
let container;
beforeAll(async () => {
container = await new WiremockContainer()
.withMappings("./test/__mocks__/wiremock")
.start();
}, 60000);
afterAll(async () => {
await container.stop();
});
it("should interact with WireMock", async () => {
const url = container.rpcUrl;
// Your test logic here
});
});WireMock uses a specific directory structure for mappings and static files. This library makes it easy to mount these into the container.
Project structure:
test/
└── __mocks__/
└── wiremock/
├── mappings/
│ └── my-mapping.json
└── __files/
└── some-data.json
import { WiremockContainer } from "@hellaweb3/wiremock-testcontainers-nodejs";
const container = await new WiremockContainer()
.withMappings("./test/__mocks__/wiremock")
.start();constructor(image?: string): Create a new container. Defaults towiremock/wiremock.withMappings(directory: string): Mountsmappingsand__filesfrom the specified local directory to the container.start(): Starts the container and returns aStartedWiremockContainer.
rpcUrl: Returns the base URL of the running WireMock instance (e.g.,http://localhost:32768).stop(): Stops the container (inherited from Testcontainers).
- Test Isolation: Start a new container for each test suite (or even each test if performance allows) to ensure a clean state.
- Mapping Organization: Keep your mappings organized in a dedicated directory structure that mirrors your API endpoints.
- Timeouts: Docker container startup can sometimes exceed the default test
runner timeout (e.g., 5s in Jest). Always set a higher timeout for
beforeAllhooks that start containers. - Resource Management: Always ensure
container.stop()is called in anafterAllorafterEachblock to prevent orphaned containers.
Maintained by Hella Labs.
MIT