Using WireMock with Jetty 12
WireMock ships with Jetty 11 by default but fully supports Jetty 12 as well with a new module wiremock-jetty12
. In this tutorial we are going to see how Wiremock could be configured to use Jetty 12.
Prerequisites #
- Java 17
- Maven or Gradle, recent versions
- A Java project, based on Maven or Gradle
Add WireMock Dependency to your project #
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock-jetty12</artifactId>
<version>3.10.0</version>
<scope>test</scope>
</dependency>
testImplementation "org.wiremock:wiremock-jetty12:3.10.0"
Limitations #
There are few limitations that usage of Jetty 12 is imposing with respect to stubbing behavior.
- status message will not be returned to the client even if set by the stub explicitly
stubFor(get("/my/resource") .willReturn(status(400) .withStatusMessage("ERROR"))); URI uri = URI.create(wireMockRule.url("/my/resource")); HttpURLConnection connection = (HttpURLConnection) uri.toURL ().openConnection (); connection.setRequestMethod ("GET"); assertThat(connection.getResponseCode()).isEqualTo(400); assertThat(connection.getResponseMessage()).isEqualTo("Bad Request"); /* the status message is not returned */
when using multipart form data, the body is not decoded into plain text in case of
base64
(or other encodings)- serving files from configured file locations always ends up with redirect when folder (without trailing
/
) is requested