echolot mock
작업 공간에서 직접 만든 경로나 OpenAPI 문서의 모의 서버를 터미널이나 CI에서 지연, 실패 주입, 요청 검사와 함께 제공합니다.
echolot mock은 모의 서버를 제공합니다. 작업 공간에 저장된 모의 서버(직접 만든 경로와, 있으면 그 명세 포함) 또는
OpenAPI 문서가 대상이며, OpenAPI 문서의 작업은 문서화된 예시나 스키마로 만든 본문으로 응답합니다. API가 생기기 전에 클라이언트를
만들거나, CI 작업에 원하는 방식으로 응답하는 서버를 제공할 때 사용합니다. 모의 서버 페이지와 같은 모의 서버를
제공합니다.
echolot mock <source> [--workspace <workspace>] [--port <port>] [--share] [--delay <ms>] [--failure-rate <percent>] [--no-validate] [--routes <file>]<source>는 명세 파일(YAML 또는 JSON)이거나, --workspace가 있으면 그 작업 공간에 저장된 모의 서버의 이름입니다.
명세의 모의 서버
echolot mock Alpenglow.echolot/specs/alpenglow.yaml --port 4010Mock of Alpenglow demo shop: 9 operations at http://127.0.0.1:4010/v1 (Ctrl-C stops it)모의 서버는 명세의 첫 번째 서버의 경로(여기서는 /v1)에서 응답합니다. 응답한 각 요청은 표준 출력의 한 줄이며, 상태, 메서드와 경로,
일치한 작업, 응답의 출처, 소요 시간이 표시됩니다. 요청의 문제는 그 아래에 나열됩니다.
200 GET /v1/products/TNT-MH-2P → GET /products/{sku} (generated) 0 ms
400 POST /v1/orders → POST /orders 0 ms
body $.lines: expected array, got string요청은 명세와 대조해 검사합니다. 매개변수나 본문이 명세에 맞지 않는 요청은 무엇이 잘못되었는지 알려 주는 400을 받습니다.
{
"error" : "The request does not match the spec (POST /orders).",
"problems" : [
"body $.lines: expected array, got string"
]
}--no-validate를 쓰면 이런 요청에도 응답합니다.
응답 선택. 기본적으로 작업은 첫 번째 성공 응답과 첫 번째 예시로 응답합니다. 요청이 Prefer: code=404, example=empty나 Postman의
x-mock-response-code, x-mock-response-name 헤더로 다른 응답을 요청할 수 있습니다.
작업 공간의 모의 서버
--workspace를 쓰면 <source>는 모의 서버 페이지에 저장된 모의 서버를 가리킵니다(mocks/에 있는, .toml을 뺀 파일 이름 또는
이름). 그 포트, 지연, 실패율, 요청 검사, 선택된 응답, 경로가 적용되며 지정한 옵션이 이를 덮어씁니다. JavaScript 경로(mocks/<name>.js)가
먼저 응답하고, 그다음 직접 만든 경로, 그다음 명세 순서입니다. 스크립트 경로와
경로와 가짜 데이터를 참조하십시오.
echolot mock shop -w Alpenglow.echolot --delay 300경로로 이루어진 모의 서버에는 명세가 필요하지 않습니다.
echolot mock storefront -w Shop.echolotMock of Storefront: 3 routes at http://127.0.0.1:4321 (Ctrl-C stops it)
200 GET /users/42 → GET /users/{id} (OK) 1 ms
404 GET /users/0 → GET /users/{id} (Not found) 0 ms각 줄에는 응답한 경로와, 괄호 안에 그 경로가 준 응답이 표시됩니다. 본문의 가짜 값은 요청마다 새로 만들어집니다. 서버 없이 가짜 데이터를 만들려면 echolot fake를 참조하십시오.
옵션
| 옵션 | 의미 |
|---|---|
-w, --workspace <folder> | 모의 서버가 있는 작업 공간 폴더. |
--port <port> | 포트. 기본값은 모의 서버 자체의 포트, 없으면 4010입니다. |
--share | 이 Mac만이 아니라 모든 네트워크 인터페이스에서 응답합니다. 컨테이너와 휴대폰용입니다. |
--delay <ms> | 각 응답 전에 기다릴 시간(밀리초). |
--failure-rate <percent> | 요청 중 주입된 500으로 응답할 비율(퍼센트). |
--no-validate | 명세에 맞지 않는 요청을 400으로 거부하는 대신 응답합니다. |
--routes <file> | 명세보다 먼저 응답하는 JavaScript 경로. 기본값은 작업 공간 모의 서버의 mocks/<name>.js입니다. |
--share가 없으면 모의 서버는 127.0.0.1에서만 수신하므로 네트워크의 다른 어떤 것도 접근할 수 없습니다. --share를 쓰면 사용자의
Mac에 접근할 수 있는 누구나 접근할 수 있습니다.
모의 서버의 한도를 넘는 요청 본문은 413을 받으며 경로에 도달하지 않습니다.
CI에서
모의 서버를 백그라운드에서 시작하고 그것을 대상으로 실행합니다. Alpenglow의 Local 환경은 {{baseURL}}을
http://localhost:8787/v1로 지정하므로, 포트 8787의 모의 서버가 그 요청에 응답합니다.
echolot mock Alpenglow.echolot/specs/alpenglow.yaml --port 8787 &
echolot run Alpenglow.echolot --env local --folder catalog
kill %1종료 코드
모의 서버는 사용자가 중지할 때까지 실행됩니다. 잘못된 옵션이나 작업 공간에 없는 모의 서버 이름이면 64로, 명세를 읽을 수 없거나
포트가 이미 사용 중이면 1로 종료합니다.