BackEnd/SpringBoot

MockServer란..?

살찐만두 2024. 7. 3. 18:04
728x90

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

 

MockServer

MockServer enables easy mocking of any system you integrate with via HTTP or HTTPS. It also proxies, allowing introspection and modification of proxied traffic, with all proxy protocols (i.e. port forwarding, HTTP, HTTPS, SOCKS4, SOCKS5, etc).

www.mock-server.com

 

728x90