MockServer 설정

10040 단어 testingdocker

주요 목표:


  • 간단하고 선언적인 테스트 환경 설정.
  • 어디서나 실행

  • 전략


  • 복제 가능한 로컬 서버를 설정합니다.

  • Docker - 컨테이너화된 애플리케이션(실제로 한 번 쓰고 어디서나 실행)
  • 모든 요청이 매핑되는 예상 JSON을 제공합니다.

  • MockServer - json 리소스 또는 REST API를 통해 복잡한 요청/응답 기대치를 가진 로컬 서버를 생성합니다.



    실현하기


  • Install Docker .
  • 설치Docker Compose .
  • Docker 데몬이 실행 중인지 확인하십시오.
  • MockServer 설정을 위한 폴더를 만듭니다.

  •   $ mkdir /path/to/mockserver_container/ && cd /path/to/mockserver_container
    


  • docker-compose.yml를 생성합니다.
  • 여기에서 MockServer용 컨테이너를 설정할 수 있습니다.


  •   $ touch ./docker-compose.yml && nano ./docker-compose.yml
    


    다음 코드 스니펫을 붙여넣습니다.

    version: "2.4"
    services:
      mockServer:
          image: mockserver/mockserver:latest
          ports:
            - 1080:1080
          environment:
            MOCKSERVER_WATCH_INITIALIZATION_JSON: "true"
            MOCKSERVER_PROPERTY_FILE: /config/mockserver.properties
            MOCKSERVER_INITIALIZATION_JSON_PATH: /config/initializerJson.json
          volumes:
            - type: bind
              source: .
              target: /config
    
    


    이것은 다음과 같이 말합니다.
  • mockserver의 도커 이미지를 사용하여 mockserver/mockserver:latest라는 이름의 서비스를 만듭니다.
  • host port 1080을 container port 1080에 할당합니다.
  • enviroment variables를 제공된 경로로 설정합니다.
  • volume(이 파일의 디렉터리)에서 컨테이너 내부의 current directory/config 바인딩을 만듭니다.
  • 예상 이니셜라이저 JSON을 설정합니다.

  • 만들기 initializerJson

  •   $ touch ./initializerJson.json && nano ./initializerJson.json
    


  • 다음 코드 조각을 붙여넣습니다.

  •   [
        {
          "httpRequest" : {
            "method" : "GET",
            "path" : "/api/v1/weather",
            "queryStringParameters" : {
              "code" : ["10969"]
          }
        },
          "httpResponse" : {
            "body" : "{\"wheather\": 20.5}",
            "statusCode": 200
          }
        }
      ]
    
    


    전체 설명서 참조를 찾을 수 있습니다here.

    컨테이너 실행



    이제 배관을 제거했으므로 배관을 실행할 차례입니다.
  • 생성한 폴더 안에 .yml를 입력합니다.

  •   $ docker-compose up
    


    터미널은 다음과 같이 인쇄되어야 합니다.

      Creating mockserver_mockServer_1 ... done
      Attaching to mockserver_mockServer_1
      mockServer_1  | 
      mockServer_1  | java  -Dfile.encoding=UTF-8 -jar /opt/mockserver/mockserver-netty-jar-with-dependencies.jar  -server
      mockServer_1  | 
      mockServer_1  | 2020-04-11 15:52:30  org.mockserver.log.MockServerEventLog  INFO  creating expectation:
      mockServer_1  | 
      mockServer_1  |   {
      mockServer_1  |     "id" : "3f3962d2-9c03-4dce-95cd-2522962ceccb",
      mockServer_1  |     "priority" : 0,
      mockServer_1  |     "httpRequest" : {
      mockServer_1  |       "method" : "GET",
      mockServer_1  |       "path" : "/api/v1/weather",
      mockServer_1  |       "queryStringParameters" : {
      mockServer_1  |         "code" : [ "10969" ]
      mockServer_1  |       }
      mockServer_1  |     },
      mockServer_1  |     "times" : {
      mockServer_1  |       "unlimited" : true
      mockServer_1  |     },
      mockServer_1  |     "timeToLive" : {
      mockServer_1  |       "unlimited" : true
      mockServer_1  |     },
      mockServer_1  |     "httpResponse" : {
      mockServer_1  |       "statusCode" : 200,
      mockServer_1  |       "body" : "{\"wheather\": 20.5}"
      mockServer_1  |     }
      mockServer_1  |   }
      mockServer_1  |  
      mockServer_1  | 2020-04-11 15:52:30  org.mockserver.cli.Main  INFO  logger level is INFO, change using:
      mockServer_1  |  - 'ConfigurationProperties.logLevel(String level)' in Java code,
      mockServer_1  |  - '-logLevel' command line argument,
      mockServer_1  |  - 'mockserver.logLevel' JVM system property or,
      mockServer_1  |  - 'mockserver.logLevel' property value in 'mockserver.properties' 
      mockServer_1  | 2020-04-11 15:52:30  org.mockserver.log.MockServerEventLog  INFO  started on port: 1080 
    
    
    


    요청 보내기



    새 터미널 창을 열고 다음을 입력합니다.

    사용 가능한 컨테이너에 대한 정보를 보려면 다음을 다시 입력하십시오.

    $ docker ps -a
    


    이제 실행 중인 컨테이너에 대한 정보를 볼 수 있습니다.

    $ curl localhost:1080/api/v1/weather\?code\=10969           
    


    응답이 표시되어야 합니다.

    {"wheather": 20.5}
    


    그리고 그게 다야!

    간단하고 복잡한 요청과 응답을 모방할 수 있는 로컬 서버가 있습니다.

    유용한 링크:



    REST API Swagger docs

    좋은 웹페이지 즐겨찾기