Webmock을 이용한 외부 서비스 목업
Webmock은 Ruby 애플리케이션 테스트 시 외부 HTTP 요청을 스텁하고 기대를 설정하는 라이브러리로, 실제 네트워크 호출 없이 테스트를 수행하여 외부 서비스의 불안정성으로부터 독립된 환경을 제공합니다.
- 
    
기본 스텁 (
stub_request):stub_request메서드를 사용하여 특정 요청에 대해 미리 정의된 정적 응답(상태 코드, 본문, 헤더)을 반환하도록 설정합니다. 이는 간단한 API 응답 목업에 효과적입니다. - 
    
Rack을 활용한 동적 목업:
stub_request의 정적 응답 한계를 극복하기 위해 Ruby의 Rack 인터페이스를 Webmock과 결합할 수 있습니다. Rack 호환 클래스를 정의하고call(env)메서드 내에서env해시(요청 정보)를 분석하여 조건에 따라 동적으로 응답을 생성합니다. 이 Rack 애플리케이션은stub_request(...).to_rack(Rack클래스)형태로 테스트 설정에 통합되어 특정 외부 도메인 요청을 라우팅하며, 실제 서버의 복잡한 동작을 모방하고 목업 로직의 재사용성을 높여 테스트의 견고함과 일관성을 향상시킵니다. 
VCR과의 비교
VCR Gem이 실제 HTTP 요청을 기록하고 재생하는 방식인 반면, Webmock과 Rack의 조합은 어떤 단계에서도 실제 HTTP 요청 없이 외부 서비스를 완전히 목업합니다. 이는 외부 API의 불안정성에 대한 의존성을 완전히 제거하여 테스트의 예측 가능성과 신뢰성을 극대화한다는 점에서 VCR보다 강력한 이점을 제공합니다.