# Введение
Контрактное тестирование или Consumer Driven Contract (CDC) - грубо, тестирование микросервиса в режиме черного ящика.
# Технологии
99% всей информации о контрактом тестиривании в .NET это Pact.
## Pact
сайт: https://pact.io
github: https://github.com/pact-foundation
github .NET: https://github.com/pact-foundation/pact-net
Pact - это программный инструмент для тестирования интеграции HTTP и сообщений с использованием контрактных тестов.
Это инструмент не только для CDC в мире .NET, а в целом большое сообщество с поддержкой большого количества языков и платформ
Pactflow - рассказывается про CDC и почему это круто, и почему не круто, и как Pact помогает с этим жить, 4-5 роликов по минут 10-20
https://youtube.com/playlist?list=PLwy9Bnco-IpfZ72VQ7hce8GicVZs7nm0i
Пример работы
https://github.com/pact-foundation/pact-net/blob/master/README_v1.md
## Pact AMQP
Pact себя позиционируют в CDC для AMQP в такой схеме
1) Никаких реальных очередей при тестировании не будет - эту роль играет сам Pact в обоих случая(Consumer, Producer)
2) В случае Consumer'а Pact как бы исполняет роль очереди и пушит сообщение в него - тем самым проверяя бизнес-логику и формируя "конфиг" контракта, после записывая куда-то(файл или pact-broker)
3) В случае Producer Pact "Invoke function to produce the message" как я понял, Pact триггерит Producer'а создать сообщения для очереди, а потом Pact его сверяет с тем что нагенерировал во время тестов Consumer'а