Skip to content

Using WireMock.Net.Testcontainers

Stef Heyenrath edited this page Sep 26, 2024 · 5 revisions

WireMock.Net.Testcontainers

WireMock.Net.Testcontainers uses Testcontainers for .NET to spinup a docker container directly from the C# (unittest) code.

This options requires docker service running locally.

Both the Linux and the Windows version from WireMock.Net are supported 📝.

📝 It's not needed to specify the version, this is determined automatically. (So if you are running Docker on a Windows Host, the Windows Docker image is used, else the Linux Docker image is used.

Usage

Build and Start

To build a container and startup this container, use this code:

var container = new WireMockContainerBuilder()
    .WithAutoRemove(true)
    .WithCleanUp(true)
    .Build();

await container.StartAsync().ConfigureAwait(false);

Methods

The following builder methods are available for the WireMockContainerBuilder:

Method Example What
WithMappings .WithMappings(@"C:\example\\mappings") Specifies the path for the (static) mapping json files.
WithWatchStaticMappings .WithWatchStaticMappings(true) Watch the static mapping files + folder for changes when running.
WithAdminUserNameAndPassword .WithAdminUserNameAndPassword("x", "y") Set the admin username. and password for the container (basic authentication).
WithImage .WithImage("sheyenrath/wiremock.net-alpine:1.6.4") You can provide a specific image + tag.

Create a Admin Client

Use the following code to get a RestEase Admin Client for this running container instance.

var restEaseApiClient = container.CreateWireMockAdminClient();

Create a HTTP Client

Use the following code to get a HTTP Client for this running container instance to call WireMock.Net

var client = container.CreateClient();
var result = await client.GetStringAsync("/test123");

Usage in Unit Test

Follow the tutorial here and make sure to use WireMock.Net container instead of the container used in that example.

Clone this wiki locally