Функціональне тестування

Перед прочитанням даного розділу рекомендується прочитати документацію по 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.