MockServer란?
MockServer는 HTTP 및 HTTPS 서버를 모방하여 클라이언트-서버 간의 상호작용을 테스트하고 개발하는 데 사용되는 강력한 도구 이다. MockServer는 HTTP/HTTPS 응답을 모의하고, 요청이 올바르게 전송되었는지 확인하며, 서비스 간의 통신을 테스트 주도 개발(TDD)이나 행동 주도 개발(BDD) 접근 방식으로 테스트할 수 있다.
내가 필요한건 딱 이거 요청 , 기대값 반환.
이거하면서 아주 gpt랑 개친해짐
일단 먼저 나는 spring boot maven project 로 구성을 했다.
그럼 뭘 해야하냐.
1. dependency 추가 해야지
<!-- MockServer -->
<dependency>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-netty</artifactId>
<version>5.11.2</version>
</dependency>
<dependency>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-client-java</artifactId>
<version>5.11.2</version>
</dependency>
2. mockServer 관련 config class 생성
@Configuration
public class MockServerConfig {
private ClientAndServer mockServer;
@PostConstruct
public void startMockServer() {
mockServer = ClientAndServer.startClientAndServer(10010);
}
@PreDestroy
public void stopMockServer() {
if(mockServer != null) {
mockServer.stop();
System.out.println("MockServer stopped!");
}
}
@Bean
public ClientAndServer mockServer() {
return mockServer;
}
}
Config 클래스는 이런식으로 구성 했다.
ClientAndServer 클래스는 MockServer를 시작하고 관리하는 데 사용된다.
보면 ClientAndServer.startClientAndServer(10010); 이렇게 해뒀는데 뒤에 10010은 내가 사용할 가상 서버의 포트이다.
이건 어느때나 어떻게나 바꿀 수 있음!
3. MockServerSetUp class 생성
@Component
public class MockServerSetup {
private final ClientAndServer mockServer;
private MockServerClient mockServerClient;
public void mockServerRes(String method, String path, ResponseVo resVo) {
this.mockServerClient = new MockServerClient("localhost", mockServer.getLocalPort());
mockServerClient.when(
HttpRequest.request()
.withMethod("POST")
.withPath("/info")
).respond(
HttpResponse.response()
.withStatusCode(200)
.withHeader("Content-Type", "application/json; charset=UTF-8")
.withBody("success message", StandardCharsets.UTF_8)
);
}
}
이런식으로 구성을 해준다.
그럼 요청을 http://localhost:10010/info에 요청을 하면 응답이 온다..! 근데 웹 브라우저 요청은 안되고, postman으루 요청해야한다!
요청 api가 많다면 아래를 메서드로 빼서 함수화 시키는 것도 좋은 방법!
무조건 ok가 아닌 응답도 보낼 수 있는것같으니 공식 문서를 보는 것을 추천드립니다~~!
https://www.mock-server.com/#what-is-mockserver