**contract testing(계약 테스트)**은 두 서비스를 완전한 통합 테스트로 함께 실행하지 않고도 그들이 API에 대해 합의했는지 검증합니다. **CDC(consumer-driven contracts, 소비자 주도 계약)**에서는 소비자가 필요한 것을 정의하고, 제공자가 그것을 제공할 수 있는지 검증합니다.
문제
많은 서비스에 걸친 완전한 종단 간(end-to-end) 테스트는 느리고, 불안정하며, 모든 커밋마다 실행하기 어렵습니다. 계약 테스트는 파괴적인 API 변경을 초기에, 격리된 상태로 잡아냅니다.
CDC 동작 방식(예: Pact)
text
1. 소비자가 기대치를 작성 ─▶ CONTRACT(Pact 파일) 생성
2. 계약을 브로커에 발행
3. 제공자가 자체 파이프라인에서 계약을 스스로에게 실행
4. 소비자를 깨뜨릴 경우 제공자 빌드가 실패
소비자 측 예시
js
provider.()
.()
.({ : , : })
.({
: ,
: { : , : }
});
