Пакт иди контрактное тестирование - должен ли я издеваться над бизнес-логикой
Я изучаю тестирование контрактов Pact, и у меня есть вопрос, следует ли имитировать бизнес-логику во время этого теста.
Допустим, у меня есть конечная точка
POST /user
{
"name": "first name"
"accountID": "12345678"
}
Предположим, я написал потребительский тест и проверил его с поставщиком. Однако, чтобы проверить это, мне нужно, чтобы API работал. Проблема в том, что когда я работаю в своей локальной среде
У меня вопрос - как обойти эту проблему? Нужно ли имитировать бизнес-логику внутри конечной точки? Но в этом случае не становится ли он просто валидатором полезной нагрузки, который может делать protobuf?
1 ответ
Потребительские тесты будут нести ответственность только за создание действительного контракта. Контракт создается путем имитации ответов API. Обычно вы издеваетесь над тем, какие определенные поля или действия вы ожидаете/нужны по запросу.
В provider вы проверите этот контракт, нажав на работающий экземпляр провайдера. Теперь очень часто поставщик должен находиться в определенном состоянии перед проверкой взаимодействия контракта. Для этого вы можете использовать состояния провайдера, чтобы убедиться, что БД находится в правильном состоянии. Вы должны определить настройку состояния для каждого взаимодействия отдельно и убедиться, что БД сбрасывается до/после каждого взаимодействия, чтобы избежать влияния одних данных состояния на другие.
Использованная литература: