advanced
Pact и consumer-driven contracts
Используйте contract tests, когда independently deployed consumers и providers требуют compatibility guarantees без опоры на broad E2E suites.
Pact реализует consumer-driven контракты: consumer задаёт ожидаемые взаимодействия; provider проверяет, что удовлетворяет записанным контрактам. Опубликованные pacts блокируют деплой provider без всего E2E-ферма consumer.
Хорошо работает при независимых деплоях сервисов и частом schema drift.
На интервью: consumer test → pact file → provider verification и что происходит при нарушении контракта.
Типовые ошибки: контракты на случайные headers, нет provider states, Pact вместо бизнес-E2E.
Компромисс — уверенность в независимых релизах против overhead pact broker и управления состояниями.
Чеклист:
- Моделируйте значимые взаимодействия, не шумные payload целиком.
- Версионируйте и публикуйте pacts в CI.
- Provider states для нужной подготовки данных.