phpunit — поддельный ответ API или реальный ответ, подключающийся к сервису?

Я создал несколько методов в классе обслуживания для подключения к внешнему сервису / провайдеру через Guzzle с помощью API POST Request.

Мне нравится использовать phpunit для тестирования — должен ли я использовать поддельный ответ HTTP Json без подключения к сервису или он должен подключаться к сервису для получения реального ответа от сервиса?

4

Решение

Обычный принцип тестирования: «Не издевайтесь над тем, чем не владеете». Подделка этих API-вызовов делает ваши тесты менее надежными и дает ложное чувство безопасности, поскольку вы, скорее всего, получите ложные срабатывания.

Например, когда API неожиданно вводит критическое изменение, ваши тесты будут зеленого цвета, и как только вы развернетесь в производство, вы, наконец, заметите, что что-то не так. Это, вероятно, то, что вы хотите, чтобы ваши тесты поймали.

При тестировании на реальном API вы почувствуете надежность. Ваши тесты часто терпят неудачу из-за перебоев в обслуживании или таймаутов? Если это так, вы можете ввести меру, например, механизм повтора, прерыватели цепи или отсоединение вызовов API от остальной части вашего приложения.

Когда вы имитируете API, все, что вы можете сказать, это то, что ваш код ведет себя в соответствии с (возможно, устаревшей) спецификацией сервиса. Это нормально, но не так полезно, как полагаться на реальное обслуживание.

Что вы можете сделать, это использовать группы для запуска этих тестов отдельно. Это позволит легко включать / исключать эти, возможно, медленные и иногда нестабильные тесты из оставшихся тестов. Это также помогает при ограничении скорости, например только выполняя эти тесты на критических ветвях.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector