JVM

[JVM] MockServer

kyoulho 2024. 7. 29. 08:54

MockServer는 Java 애플리케이션에서 HTTP 서버를 모킹(Mocking)할 수 있는 도구이다. 이를 통해 테스트 시 외부 API 호출을 모킹 하여 일관된 응답을 제공하고, 테스트의 안정성과 재현성을 높일 수 있다

MockServer 설정

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.mock-server:mockserver-netty:5.13.2")
    testImplementation("org.mock-server:mockserver-client-java:5.13.2")
}

 

JUnit 테스트에서 MockServer를 설정한다. MockServer는 외부 API를 모킹하기 위해 시작되고, 테스트가 끝난 후 종료되어야 한다.

import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.mockserver.client.MockServerClient
import org.mockserver.integration.ClientAndServer
import org.mockserver.model.HttpRequest
import org.mockserver.model.HttpResponse

class MyServiceTest {

    private lateinit var mockServer: ClientAndServer
    private lateinit var mockServerClient: MockServerClient

    @BeforeEach
    fun startServer() {
        // MockServer 시작
        mockServer = ClientAndServer.startClientAndServer(1080)
        mockServerClient = MockServerClient("localhost", 1080)
    }

    @AfterEach
    fun stopServer() {
        // MockServer 중지
        mockServer.stop()
    }

    @Test
    fun `모킹된 응답을 반환해야 한다`() {
        // Mock 응답 설정
        mockServerClient.`when`(
            HttpRequest.request()
                .withMethod("GET")
                .withPath("/mocked-endpoint")
        ).respond(
            HttpResponse.response()
                .withStatusCode(200)
                .withBody("{\"message\": \"This is a mocked response\"}")
        )

        // 테스트 코드 작성
    }
}

 

 

728x90

'JVM' 카테고리의 다른 글

[JVM] JDBC 쿼리 및 메서드 실행 로깅  (0) 2024.08.17
[JVM] Jackson의 ObjectMapper: 객체 생성 방식과 필드 바인딩  (0) 2024.08.10
BDDMockito  (0) 2024.07.28
JUnit  (0) 2024.07.28
테스트 커버리지와 JaCoCo  (0) 2024.07.27