Mockserver Module
Mock Server can be used to mock HTTP services by matching requests against user-defined expectations.
Usage example
The following example shows how to start Mockserver.
public static final DockerImageName MOCKSERVER_IMAGE = DockerImageName
.parse("mockserver/mockserver")
.withTag("mockserver-" + MockServerClient.class.getPackage().getImplementationVersion());
@Rule
public MockServerContainer mockServer = new MockServerContainer(MOCKSERVER_IMAGE);
And how to set a simple expectation using the Java MockServerClient.
try (
MockServerClient mockServerClient = new MockServerClient(mockServer.getHost(), mockServer.getServerPort())
) {
mockServerClient
.when(request().withPath("/person").withQueryStringParameter("name", "peter"))
.respond(response().withBody("Peter the person!"));
// ...a GET request to '/person?name=peter' returns "Peter the person!"
assertThat(SimpleHttpClient.responseFromMockserver(mockServer, "/person?name=peter"))
.as("Expectation returns expected response body")
.contains("Peter the person");
}
Adding this module to your project dependencies
Add the following dependency to your pom.xml
/build.gradle
file:
testImplementation "org.testcontainers:mockserver:1.20.4"
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mockserver</artifactId>
<version>1.20.4</version>
<scope>test</scope>
</dependency>
Additionally, don't forget to add a client dependency org.mock-server:mockserver-client-java
to be able to set expectations, it's not provided by the testcontainers module. Client version should match to the version in a container tag.