피드로 돌아가기
Dev.toBackend
원문 읽기
개발자가 RESTAPI 통합 테스트에서 상태 유지를 못하는 무상태 목 서버의 한계를 해결하기 위해 자체 상태 저장 API 샌드박스를 구축한 경험
My mock server lied to me. So I built a stateful API sandbox.
AI 요약
Context
기존 무상태 목 서버(Prism, WireMock, Mockoon)는 각 요청을 독립적으로 처리하여 POST로 생성한 리소스를 GET으로 조회할 수 없다. 결제 API 통합 테스트에서 POST /charges 응답의 ID를 이용해 GET /charges/ch_123을 호출하면 404 오류가 발생한다. 실제 결제 플로우(고객 생성 → 결제 의도 생성 → 결제 확정 → 웹훅 발생)는 순차적 ID 체인과 상태 전이가 필요한데 무상태 목 서버는 이를 처리할 수 없다.
Technical Solution
- FetchSandbox 도구를 OpenAPI 스펙 기반으로 설치하고 실행하는 과정 설명
- POST 요청으로 생성된 리소스가 메모리에 유지되어 subsequent GET 요청으로 조회 가능
- payment_intent.created, payment_intent.succeeded 같은 웹훅 이벤트가 리소스 변경 시 자동 발생
- --scenario auth_failure 플래그로 전체 샌드박스를 오류 모드로 전환하여 401Unauthorized 테스트 가능
- fetchsandbox state {service} {resource} 명령으로 샌드박스 내부 리소스 상태 직접 확인
- fetchsandbox run {service} --all 명령으로 모든 통합 워크플로우를 엔드투엔드 실행하고 실패 단계 식별
Impact
API 탐색부터 첫 성공적 호출까지 소요 시간이 기존 15~30분에서 1초 미만으로 단축되었다. TTFC(Time to First Call) 벤치마크 기준 2분 이하면 Champion 티어에 해당한다.
Key Takeaway
무상태 목 서버는 단위 테스트용 HTTP 클라이언트 검증에는 적합하지만 다단계 플로우의 상태 관리와 웹훅 테스트가 필요한 실제 통합 시나리오에는 자체 상태 저장 샌드박스가 필요하다.
실천 포인트
타사 결제/인식 API 통합 테스트 환경에서 OpenAPI 스펙 기반 상태 저장 샌드박스 도구를 활용하면 개발 단계에서 웹훅과 ID 체인까지 검증하는 엔드투엔드 워크플로우를 CI/CD 파이프라인에 적용할 수 있다