Pact Reference
Pact 계약테스트 레퍼런스
Pact Reference 소개
Pact 레퍼런스는 Pact 소비자 주도 계약 테스트의 핵심 워크플로우를 체계적으로 정리한 검색 가능한 참조 도구입니다. 소비자 측 테스트(PactV3 설정, addInteraction, executeTest, MessageConsumerPact), 프로바이더 측 검증(Verifier, stateHandlers, requestFilter), 계약 구조(Pact 파일 형식, providerState, Content-Type, Pending Pacts), 매처(MatchersV3.like, eachLike, regex, integer, datetime), Pact Broker 운영(게시, can-i-deploy, 웹훅, 환경 관리), 검증 전략(consumerVersionSelectors, CI/CD 파이프라인, WIP Pacts)을 다룹니다.
마이크로서비스 계약 테스트를 구현하는 QA 엔지니어, 백엔드 개발자, DevOps 팀을 위해 설계되었으며, 모든 Pact 워크플로우 단계에 대해 바로 사용할 수 있는 TypeScript 및 CLI 예제를 제공합니다.
총 26개 항목이 소비자, 프로바이더, 계약, 매처, 브로커, 검증의 6개 카테고리로 구성되어, 테스트 구현, CI 파이프라인 구성, 계약 실패 디버깅 시 빠른 조회가 가능합니다.
주요 기능
- PactV3 소비자 테스트 설정: addInteraction, 프로바이더 상태, executeTest 예제
- 프로바이더 검증: Verifier, 테스트 데이터 설정용 stateHandlers, 인증 토큰용 requestFilter
- 계약 구조 레퍼런스: Pact JSON 형식, providerState, Pending Pacts, Content-Type 처리
- MatchersV3 API: 타입 매칭(like), 배열 매칭(eachLike), regex, integer, decimal, datetime 매처
- Pact Broker CLI 명령어: publish, can-i-deploy, create-environment, record-deployment, 웹훅
- GitHub Actions 예제를 포함한 CI/CD 파이프라인 연동과 can-i-deploy 체크
- 이벤트 기반 아키텍처를 위한 MessageConsumerPact 비동기 메시지 계약 테스트
- 6개 카테고리 키워드 필터링으로 즉시 검색 지원
자주 묻는 질문
이 Pact 레퍼런스에서 어떤 내용을 다루나요?
전체 Pact 워크플로우를 다룹니다: 소비자 측 테스트(PactV3, addInteraction, executeTest, 메시지 Pact), 프로바이더 검증(Verifier, stateHandlers, requestFilter), 계약 구조(JSON 형식, 프로바이더 상태, Pending Pacts), 매처(like, eachLike, regex, integer, datetime), Pact Broker 운영(게시, can-i-deploy, 웹훅, 환경), CI/CD 연동(GitHub Actions, consumerVersionSelectors, WIP Pacts).
소비자 주도 계약 테스트란 무엇인가요?
소비자 주도 계약 테스트는 소비자(API 클라이언트)가 프로바이더(API 서버)와의 기대되는 상호작용을 계약 파일로 정의하는 방식입니다. 프로바이더는 모든 계약을 충족할 수 있는지 검증합니다. 이를 통해 통합 테스트 없이 API 호환성을 보장하고, 배포 전에 호환성 깨짐을 감지합니다.
Pact 매처는 어떻게 작동하나요?
매처는 정확한 값 대신 응답의 구조와 타입을 검증합니다. MatchersV3.like(1)은 필드가 숫자인지 확인하고, eachLike({id: 1})은 배열 요소 구조를 검증하며, regex()는 패턴 매칭, integer()와 decimal()은 숫자 타입을 강제하고, datetime()은 날짜/시간 형식을 검증합니다. 이를 통해 API 형태를 강제하면서도 유연한 계약을 만듭니다.
can-i-deploy 명령어는 무엇인가요?
can-i-deploy는 특정 서비스 버전이 환경에 안전하게 배포 가능한지 확인하는 Pact Broker CLI 명령어입니다. 모든 소비자 계약이 프로바이더에 의해 성공적으로 검증되었는지 확인합니다. CI/CD 파이프라인에서 배포 전 최종 게이트 역할을 합니다.
프로바이더 상태 핸들러는 어떻게 설정하나요?
프로바이더 상태 핸들러는 각 상호작용에 필요한 테스트 데이터를 설정하는 함수입니다. Verifier 옵션의 stateHandlers에서 상태 이름(소비자 테스트에서 정의)을 async 함수에 매핑합니다. 예를 들어 "a user exists"는 검증 전에 데이터베이스에 테스트 사용자를 생성할 수 있습니다.
Pending Pacts와 WIP Pacts는 무엇인가요?
Pending Pacts는 검증이 실패해도 프로바이더 빌드를 실패시키지 않는 새 계약으로, 프로바이더가 기대되는 동작을 구현할 시간을 줍니다. WIP(Work In Progress) Pacts는 지정 날짜 이후 생성된 미검증 계약을 자동으로 포함하여, 수동 구성 없이 새 소비자 기대사항을 발견하게 합니다.
Pact로 메시지 기반(이벤트 기반) 통합을 테스트할 수 있나요?
네. MessageConsumerPact를 사용하면 이벤트 기반 아키텍처의 예상 메시지 계약을 정의할 수 있습니다. 소비자가 기대하는 메시지 내용을 명시하고, 프로바이더가 계약에 맞는 메시지를 생성할 수 있는지 검증합니다. Kafka, RabbitMQ, SNS/SQS 등 모든 메시지 브로커에 적용됩니다.
이 Pact 레퍼런스는 무료인가요?
네, 계정이나 다운로드 없이 완전히 무료로 사용할 수 있습니다. 모든 콘텐츠는 서버 호출 없이 브라우저에서 실행됩니다. liminfo.com의 무료 개발자 및 테스트 도구 모음의 일부입니다.