Подтвердить что ты не робот

Как unit test ваш API?

Я нахожусь в точке, где мне нужно написать модульные тесты для REST API, написанные с использованием CakePHP 1.3. API поддерживает запросы GET, POST и PUT для запросов и обработки данных.

Существует ли установленный способ проверки правильного ввода/вывода API, имитирующего HTTP-запрос, используя светильники? Я не хочу запускать фактические запросы POST/PUT в базе данных live (dev). Как я могу лучше всего издеваться над системой для использования временных моделей, но проверить оставшуюся часть стека как есть?


Тестирование запросов GET достаточно просто с помощью тестов контроллера. Однако для обработки данных API использует HTTP-заголовки довольно широко, а также анализирует необработанные данные XML и JSON POST/PUT. Методы контроллера unit test только высмеивают данные POST, устанавливая $this->data в контроллере, что не позволяет мне правильно протестировать API.

4b9b3361

Ответ 2

Похоже, вы можете протестировать необработанные XML-данные PUT и POST без особых проблем. Документация CakePHP REST говорит следующее:

Если запрос POST или PUT имеет тип содержимого XML, то ввод берется и передается экземпляру объекта Cake Xml, который присваивается свойству $data контроллера. Из-за этой функции обработка данных XML и POST параллельна: все изменения не требуются для контроллера или кода модели. Все, что вам нужно, должно быть в $this- > data.

Попробуйте выполнить свой код контроллера в режиме отладки, чтобы узнать, что на самом деле происходит через $this->data во время XML-запроса.

Как для избежания живой базы данных, будет ли SQLite база данных в памяти легче?

Ответ 3

Вы должны либо создать Mocks, либо использовать Isolation Framework для моделирования среды API. Модульные тесты не должны зависеть от таких ресурсов, как интернет-соединения, сеть, конечные точки и т.д.

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