Пакт иди контрактное тестирование - должен ли я издеваться над бизнес-логикой

Я изучаю тестирование контрактов Pact, и у меня есть вопрос, следует ли имитировать бизнес-логику во время этого теста.

Допустим, у меня есть конечная точка

      POST /user

{
  "name": "first name"
  "accountID": "12345678"
}

Предположим, я написал потребительский тест и проверил его с поставщиком. Однако, чтобы проверить это, мне нужно, чтобы API работал. Проблема в том, что когда я работаю в своей локальной среде из существует. Однако, когда другой разработчик запустит его в своей среде, его может не быть.

У меня вопрос - как обойти эту проблему? Нужно ли имитировать бизнес-логику внутри конечной точки? Но в этом случае не становится ли он просто валидатором полезной нагрузки, который может делать protobuf?

1 ответ

Потребительские тесты будут нести ответственность только за создание действительного контракта. Контракт создается путем имитации ответов API. Обычно вы издеваетесь над тем, какие определенные поля или действия вы ожидаете/нужны по запросу.

В provider вы проверите этот контракт, нажав на работающий экземпляр провайдера. Теперь очень часто поставщик должен находиться в определенном состоянии перед проверкой взаимодействия контракта. Для этого вы можете использовать состояния провайдера, чтобы убедиться, что БД находится в правильном состоянии. Вы должны определить настройку состояния для каждого взаимодействия отдельно и убедиться, что БД сбрасывается до/после каждого взаимодействия, чтобы избежать влияния одних данных состояния на другие.

Использованная литература:

Другие вопросы по тегам