PHPUnit имеет методы виртуально протестировать базы данных, но как я могу протестировать HTTP-сервис, такой как curl?
Мой метод класса получает URL и запрашивает параметры для отправки на сервер. Он получает ответ как json и отправляет этот json другому методу для анализа и возврата.
Я хочу создать контрольный пример PHPUnit для этого метода класса. Должен ли я предоставить реальный URL для моего сервера? Должен ли сервер возвращать успешное сообщение / сообщение об ошибке в этот контрольный пример?
Вместо того, чтобы иметь curl
связь внутри некоторых методов вашего класса, оберните curl
Позвоните в его собственный класс, высмеивайте его и передайте его вашему классу.
Таким образом, вы можете проверить счастливый путь, если макет возвращает реальное json
, а также имитировать ошибки скручивания (заставить макет вести себя как настоящий curl
библиотека).
То же самое относится и к части синтаксического анализа. Если вы переместите код синтаксического анализа в его собственный класс и вставите его в «основной» класс, то вы сможете смоделировать его и смоделировать ошибки синтаксического анализа.
Для модульного тестирования вы никогда не должны делать реальные сетевые вызовы.
Других решений пока нет …