Тестирование контроллеров CodeIgniter - PullRequest
1 голос
/ 19 марта 2012

Мы создаем RESTful API с использованием CodeIgniter, и я пытаюсь определить, как создавать тесты для контроллеров.Контроллеры получают некоторый ввод из клиентского приложения, выполняют некоторую бизнес-логику, используя одну или несколько моделей, а затем выводят JSON.

Целью тестов является в основном регрессионное тестирование - чтобы убедиться, что инженеры на стороне клиента, которые не являются, в основном, разработчиками web / php, ничего не сломают, если им нужно прикоснуться к коду сервера.

Как бы вы протестировали действие контроллера в CI?

В настоящее время у меня есть две идеи: 1.) Создать тестовую функцию / класс, который выполняет его настройку с базой данных, затем вызывает контроллер через curl, имитируя поведение клиента.2.) Не тестируйте контроллеры, сохраняйте всю логику в моделях и не пишите тесты для моделей.

Есть мысли, какие из них будут более надежными / простыми в использовании?(или дополнительные предложения?)

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Как и собственная библиотека тестирования CodeIgniter (CodeIgniter 2), можно использовать PHPUnit с CodeIgniter с FooStack .Если вы используете CodeIgniter 2.x, это не так просто для интеграции, как это было в CodeIgniter 1.x, но я видел, как это делается.

Сам FooStack поставляется с примерами тестов, охватывающих как модели, так и контроллеры.другие вещи, и могут дать вам хорошую отправную точку.

Еще один способ проверить ваш контроллер, который, как вы сказали, возвращает JSON, может заключаться в использовании Selenium IDE.Это позволит вам запускать простые тесты, которые проверяют, что требуемый ввод возвращает ожидаемый результат, не беспокоясь о том, как это делается.FooStack или библиотека модульного тестирования, вероятно, дадут вам больше охвата и уверенности.

0 голосов
/ 29 ноября 2013

Вы также можете проверить контроллер, передав данные формы на свой тестовый контроллер, например

$_POST['name'] = 'testuser';
$this->CI->index_post();
$data = output();
# Decode Response data
$actualArray = json_decode($data, true);

$this->assertNotEmpty($actualArray['status'], 'Status is empty');

таким образом вы можете проверить свой контроллер через ваш тест / контроллер.

0 голосов
/ 20 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...