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 |