UStackUStack
Decoy icon

Decoy

Decoy는 Docker나 클라우드 터널 없이 로컬에서 API·웹훅을 시뮬레이션하는 macOS 모크 서버로, 엔드포인트를 정의하고 요청을 확인·응답을 제어합니다.

Decoy

Decoy란?

Decoy는 개발자들이 로컬에서 HTTP 엔드포인트와 웹훅 동작을 시뮬레이션할 수 있는 macOS 네이티브 모크 서버입니다. 라우트를 정의하고, 들어오는 요청을 검사하며, 제어된 모크 응답을 반환하여 외부 서비스를 구축하지 않고도 API 래퍼, 요청 처리, 리다이렉트, 장애 모드를 테스트할 수 있습니다.

Decoy의 핵심 목적은 로컬 온디맨드 테스트입니다: 클라이언트를 Decoy의 로컬 도메인과 포트로 연결하고, 도착하는 각 요청을 확인하며, 원하는 시나리오에 맞게 엔드포인트 응답을 조정하여 코드를 테스트합니다.

주요 기능

  • macOS 네이티브 앱, 즉시 시작: SwiftUI 앱으로 실행되며 Docker, 클라우드 터널, 설정 단계 없이 빠르게 시작됩니다.
  • 엔드포인트 및 요청/응답 제어: 메서드 + 경로 쌍을 프로젝트로 그룹화하여 정의한 후, 응답 상태 코드, 본문 유형, 헤더, 지연 옵션을 선택합니다.
  • 실시간 요청 검사: 모든 들어오는 요청에 헤더, 본문, 소스 IP, 타임스탬프, 요청 ID(UUID)가 표시되며, JSON 본문은 자동 포맷됩니다.
  • 매개변수화된 경로 및 프로젝트: 경로 매개변수(예: /users/:id가 /users/42와 일치)를 지원하며, 엔드포인트를 프로젝트로 구성합니다.
  • 일반 웹 시나리오 응답 형식: 텍스트, JSON, HTML, XML, 파일, 빈 응답, 리다이렉트를 선택; 리다이렉트 시 Location 헤더 자동 설정.
  • 브라우저 및 CORS 지원: 브라우저 기반 요청이 바로 작동하며 CORS 헤더가 자동 추가됩니다. 리다이렉트 상태 코드(301, 302, 307, 308) 지원.
  • 요청/응답 스냅샷 및 내보내기: 각 요청에 실제 반환된 내용을 확인하고 cURL, JavaScript fetch, Ruby로 요청 내보내기.
  • SQLite를 통한 영속적 요청 로깅: 앱이 예기치 않게 종료되어도 데이터 손실 없이 SQLite에 즉시 기록됩니다.

Decoy 사용 방법

  1. Mac App Store에서 Decoy를 설치한 후 macOS 14 Sonoma 이상에서 앱을 실행합니다.
  2. 프로젝트를 생성하거나 선택한 후, 메서드와 경로 쌍으로 엔드포인트를 정의합니다.
  3. 각 엔드포인트의 모크 응답을 설정: 상태 코드 지정, 본문 유형(JSON, HTML, XML, 파일 등) 선택, 헤더 추가, 지연 옵션 설정.
  4. 앱이나 테스트 도구를 Decoy 로컬 도메인과 포트(decoy.my:8998은 제품 설명에 명시)로 연결합니다.
  5. 클라이언트나 브라우저에서 요청을 보냅니다. Decoy가 들어오는 요청 상세를 표시하고 다음 요청부터 응답 변경을 적용합니다.

사용 사례

  • 웹훅 처리 및 엣지 케이스 테스트: Decoy로 웹훅 요청을 보내 코드가 다양한 상태 코드, 응답 본문, 헤더, 시뮬레이션 지연을 처리하는지 확인합니다.
  • API 래퍼 로직 검증: 제어하는 모크 엔드포인트로 API 클라이언트를 테스트하며, 들어오는 요청을 관찰하면서 응답 페이로드와 헤더를 조정합니다.
  • 리다이렉트 동작 재현: 적절한 Location 헤더와 함께 리다이렉트를 반환하도록 엔드포인트를 설정하여 앱이 301/302/307/308을 따르거나 반응하는지 테스트합니다.
  • 개발 중 정적 콘텐츠 제공: 파일 응답으로 이미지, PDF, 기타 파일을 직접 제공하거나 본문 유형을 HTML로 설정해 전체 HTML 페이지를 제공합니다.
  • 실제 요청/응답 상호작용 캡처 및 재사용: 요청 스냅샷을 사용하고 생성된 cURL 또는 fetch/Ruby 동등물을 내보내 문제 재현이나 예시 공유에 활용합니다.

자주 묻는 질문

Decoy는 Docker, 클라우드 터널, 설정 파일이 필요하나요? 아니요. 제품 설명에 Docker, 클라우드 터널, 설정 파일 없이 실행된다고 명시되어 있습니다.

지원 플랫폼과 버전은? macOS 14 Sonoma 이상이 필요합니다.

모크 응답 변경은 어떻게 적용되나요? JSON, 헤더, 상태 코드 등의 편집은 다음 들어오는 요청부터 적용됩니다.

브라우저 요청과 CORS를 처리하나요? 네. 브라우저 기반 요청을 지원하며 CORS 헤더가 자동 추가됩니다.

요청 데이터는 어디에 저장되나요? SQLite에 즉시 기록되며, 제품 설명에 앱이 예기치 않게 종료되어도 데이터가 손실되지 않는다고 명시되어 있습니다.

대안

  • 로컬 HTTP 모크 서버 (일반 도구): 이 카테고리의 도구들은 로컬 엔드포인트와 제어 가능한 응답을 제공하며, 보통 설정 파일이나 컨테이너를 사용합니다. Decoy는 Docker 없이 네이티브 macOS UI를 강조합니다.
  • 전용 API 모킹 플랫폼 (호스팅 서비스): 네트워크를 통해 엔드포인트를 시뮬레이션할 수 있지만, 외부 설정과 배포가 필요하며 로컬 모크 서버를 실행하는 대신입니다.
  • 요청/응답 스터빙 라이브러리 또는 테스트 프레임워크: 일부 팀은 테스트 스위트 내 코드 기반 스터브를 사용합니다. 이는 요청 검사와 응답 편집을 위한 UI가 있는 Decoy의 독립형 로컬 서버와 다릅니다.
  • 모킹 지원 API 테스트 도구: 일부 인터랙티브 API 클라이언트가 모킹이나 로컬 시뮬레이션을 지원합니다. 워크플로가 다를 수 있으며, 특히 전용 요청 검사, 프로젝트, 응답 스냅샷/내보내기 기능에서 그렇습니다.
Decoy | UStack