#testing #verify #pact #contract
#тестирование #проверка #соглашение #контракт
Вопрос:
Я создал демонстрационное приложение для тестирования по пакту-контракту. Ниже приведена ссылка, на которую я ссылался. Я изменил несколько вещей из этого, таких как patternmatcher и bodytype. https://www.javacodegeeks.com/2017/03/consumer-driven-testing-pact-spring-boot.html
Я могу опубликовать пакт от потребителя и проверить его со стороны поставщика.
Меня попросили также проверить пакт со стороны потребителя. Например. потребитель отправляет следующий json поставщику для создания нового пользователя.
{
"address": {
"city": "string",
"houseNumber": 0,
"postalCode": "string",
"street": "string"
},
"name": "string",
"registrationId": 0,
"surname": "string"
}
Но теперь потребитель изменяет классы модели. (поскольку это также поставщик для какой-либо другой услуги. возможно, удастся получить запрос на изменение контракта (change contract). Ниже приведен новый запрос json, который будет сгенерирован.
{
"address": {
"city": "string",
"houseNumber": 0,
"postalCode": "string",
"street": "string"
},
"firstname": "string",
"registrationId": 0,
"surname": "string"
}
При изменении объекта запроса. Если я проверю потребителя на соответствие пакту. Это должно завершиться неудачей.
Проблема: Когда я запускаю mvn: verify от потребителя, это всегда нормально. Я хочу, чтобы это завершилось неудачей.
PS Дайте мне знать, если это неправильный способ сделать это.
Ответ №1:
Потребительский тест аналогичен модульному тестированию. Это всегда пройдет, если ваш код выполняет то, что вы ожидаете от него в тесте. Это не зависит от предыдущего состояния (такого как предыдущий сгенерированный контракт).
Часть процесса, в которой вы должны проверять наличие критических изменений, выполняется в CI с помощью инструмента can I deploy (https://docs.pact.io/pact_broker/can_i_deploy ).
Комментарии:
1. Нет ли какой-либо возможности сделать это с помощью maven? Я хочу разорвать его только во время разработки.
2. Я не знаю, существует ли задача can-i-deploy (я не помню, чтобы слышал о ней, поэтому я бы сказал, что, вероятно, это не так), но вы должны быть в состоянии создать свою собственную задачу maven для ее выполнения, если этого не происходит. Или не используйте Maven для этого, а просто используйте инструменты CLI Pact hub.docker.com/r/pactfoundation/pact-cli