사용자 도구

사이트 도구


java:mock_server

Mock Server

기본 개념

  • 별도의 Mock Server를 별도로 띄워놓고 Application에서 가상의 요청/응답 스펙을 작성한 뒤에 테스트를 진행하거나,
  • 혹은 Java Application의 경우 아예 테스트 코드 시작시 Mock 서버를 띄우고 테스트 진행후 서버도 내려버릴 수 있다.
  • 또한 Mock Server에 일부는 가상 요청/응답으로 하고, 나머지 일부는 실제 API 서버로 요청을 Proxy 하도록 처리도 가능하다.

Server

  • 기본적으로 Netty 기반 Java application 이며
  • 이를 통합 jar 실행, Maven plugin, npm, war(Tomcat에 올려 띄우기), Java Test code내에서 띄웠다 테스트 끝나면 종료, docker 등을 통한 서버 띄우기가 가능하다.
  • 간단한 Jar를 통한 실행 - 사이트에서 jar 다운로드 받고서
    java -Dmockserver.logLevel=INFO -jar mockserver-netty-5.3.0-jar-with-dependencies.jar -serverPort 1080

Client

  • Java, node.js, REST API 등을 지원한다.
  • client로 expectation 정의, verification, reset(cleansing) 등을 수행할 수 있다.

Java Client

  • org.mockserver.client.server.MockServerClient : 원격 MockServer 인스턴스에 접속하여 expectation을 선언하는 Client Class
  • org.mockserver.integration.ClientAndServer: 로컬 MockServer 인스턴스를 생성하고 여기에 expectation을 선언하고 요청을 날린다.
  • 간단한 expectation 작성 - Mock Server를 띄우고 아래 코드를 실행한 뒤에 http://localhost:1080/hello 요청을 하면 3초 뒤에 “World!!시간” 응답이 온다.
    import static org.mockserver.model.HttpRequest.request;
    org.mockserver.model.HttpResponse#response()
    new MockServerClient("localhost", 1080)
        .when(
                request()
                .withMethod("GET")
                .withPath("/hello")
             )
        .respond(
                response()
                .withDelay(TimeUnit.SECONDS, 3)
                .withBody("World!!" + LocalDateTime.now())
                );

참조

java/mock_server.txt · 마지막으로 수정됨: 2023/01/02 14:30 저자 kwon37xi