WireMock
WireMock​
WireMock is a library which provides HTTP response stubbing, matchable on URL, header and body content patterns etc.
Kotest provides a module kotest-extensions-wiremock
for integration with wiremock.
To begin, add the following dependency to your build:
io.kotest.extensions:kotest-extensions-wiremock:{version}
Having this dependency in the classpath brings WireMockListener
into scope.
WireMockListener
manages the lifecycle of a WireMockServer
during your test.
For example:
class SomeTest : FunSpec({
val customerServiceServer = WireMockServer(9000)
listener(WireMockListener(customerServiceServer, ListenerMode.PER_SPEC))
test("let me get customer information") {
customerServiceServer.stubFor(
WireMock.get(WireMock.urlEqualTo("/customers/123"))
.willReturn(WireMock.ok())
)
val connection = URL("http://localhost:9000/customers/123").openConnection() as HttpURLConnection
connection.responseCode shouldBe 200
}
// ------------OTHER TEST BELOW ----------------
})
In above example we created an instance of WireMockListener
which starts a WireMockServer
before running the tests
in the spec and stops it after completing all the tests in the spec.
You can use WireMockServer.perSpec(customerServiceServer)
to achieve same result.
class SomeTest : FunSpec({
val customerServiceServer = WireMockServer(9000)
listener(WireMockListener(customerServiceServer, ListenerMode.PER_TEST))
test("let me get customer information") {
customerServiceServer.stubFor(
WireMock.get(WireMock.urlEqualTo("/customers/123"))
.willReturn(WireMock.ok())
)
val connection = URL("http://localhost:9000/customers/123").openConnection() as HttpURLConnection
connection.responseCode shouldBe 200
}
// ------------OTHER TEST BELOW ----------------
})
In above example we created an instance of WireMockListener
which starts a WireMockServer
before running every test
in the spec and stops it after completing every test in the spec.
You can use WireMockServer.perTest(customerServiceServer)
to achieve same result.