2012-03-19 3 views
1

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

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

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

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

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

+0

Я думаю, что там есть CI restful api library, где-то плавают, просматривают и видят, как это работает, указывая на правильную дорогу. извините, я не могу указать вам ссылку. – Philip

+0

они получили модульное тестирование, но я не уверен, что это то, что вам нужно. только что опубликован в случае, если он помогает http://codeigniter.com/user_guide/libraries/unit_testing.html – Joseph

ответ

0

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

1

Как и CodeIgniter's own testing library (CodeIgniter 2) можно use PHPUnit with CodeIgniter with FooStack. Если вы используете CodeIgniter 2.x, это не так просто интегрировать, как в CodeIgniter 1.x, но я видел это.

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

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

0

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

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

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

как это можно проверить контроллер через тест/контроллера.

Смежные вопросы