Kotest WireMock 확장
WireMock 확장에 대해 소개한다.
WireMock은 URL, header 및 body content 패턴 등에서 일치하는 HTTP 응답 스터빙(stubbing)을 제공하는 라이브러리이다.
Kotest는 WireMock과의 통합을 위해 kotest-extensions-wiremock
모듈을 제공한다.
시작하려면 빌드에 다음 종속성을 추가해야 한다:
io.kotest.extensions:kotest-extensions-wiremock:{version}
클래스 경로에 이 종속성을 포함하면 WireMockListener
가 사용할 수 있게 된다. WireMockListener
는 테스트를 하는 동안에 WireMockServer
의 수명 주기를 관리한다.
예를 들어:
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 ----------------
})
위의 예제에서는 사양의 테스트를 실행하기 전에 WireMockListener
를 시작하고 사양의 모든 테스트를 완료한 후 중지하는 WireMockServer
의 인스턴스를 만들었다.
WireMockServer.perSpec(customerServiceServer)
를 사용하여 동일한 결과를 얻을 수 있다.
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 ----------------
})
위의 예제에서는 사양의 모든 테스트를 실행하기 전에 WireMockListener
를 시작하고 사양의 모든 테스트를 완료한 후 중지하는 WireMockServer
의 인스턴스를 만들었다. WireMockServer.perTest(customerServiceServer)
를 사용하여 동일한 결과를 얻을 수 있다.
참조
최종 수정 : 2024-04-14