Функциональное тестирование

Перед прочтением даного раздела рекомендуется прочитать документацию по Selenium и документацию по PHPUnit. Дальше мы подытожим основные принципы написания функциональных тестов в Yii:

Перед описанием, как же писать функциональный тест, давайте глянем файл WebTestCase.php, сгенерированный командой yiic webapp. Этот файл определяет класс WebTestCase, который может служить базовым для всех классов функциональных тестов.



Класс WebTestCase в основном устанавливает базовый URL тестируемых страниц. Далее, в тестовых методах, мы можем использовать относительные URL для определения тестируемых страниц.

Мы также должны обратить внимание, что согласно базового тестового URL в качестве входной точки используется файл index-test.php вместо файла index.php. Единственное различие между сценариями index-test.php и index.php то, что в качестве файла конфигурации приложения первый использует файл test.php, а второй — файл main.php.

Теперь мы опишем, как протестировать функцию отображения записи демо-блога. Сначала мы пишем тестовый класс, как показано ниже. Отметим, что тестовый класс наследует от базового класса, который мы только что описали:



Как и при написании класса модульного теста, мы объявляем фикстуры для использования этим тестом. Здесь мы показываем, что должна использоваться фикстура Post. В тестирующем методе testShow мы сначала поручаем Selenium RC открыть URL post/1. Заметим, что это относительный URL, а полный URL формируется путем добавления относительного к базовому URL (т.е. http://localhost/yii/demos/blog/index-test.php/post/1), который мы установили в базовом классе. Затем мы проверяем, что можем найти заголовок записи sample1 на данной странице. И мы также проверяем, что страница содержит текст Leave a comment.

Подсказка: Перед запуском функциональных тестов запустите сервер Selenium-RC. Сделать это можно командой java -jar selenium-server.jar, выполненной в директории, в которую установлен Selenium.