Постоянство данных в каждой итерации PactVerify в провайдере
Каков наилучший способ выполнить проверку контрактов, когда конечная точка поставщика выполняет сохранение данных?
Например, регистрация клиента. Должен ли я рассмотреть откат данных в конвейере?
2 ответа
Я принимаю решение, основанное на компромиссах насмешек / недосмотров для каждой конкретной кодовой базы. Я работал на микросервисах, где было очень просто откатить транзакцию, поэтому я использовал реальную базу данных для этих тестов. Я также работал над системами, в которых было больше смысла издеваться над хранилищем, как это было предложено Фабрицио. Я всегда издеваюсь над зависимостями сервисов.
Учитывая, что тесты по клиентским контрактам (как правило) не должны быть функциональными тестами, я высмеиваю все, что находится ниже моего ресурса провайдера, который обрабатывает остальной вызов. Таким образом, данные не сохраняются, и это также значительно упрощает тестирование, поскольку вы удаляете все зависимости от внешних компонентов, включая базы данных.
Например, если ваш ClientResource
(или же ClientController
в зависимости от вашего имени шаблона) вызывает ClientRepository
, ClientRepository
будет издеваться