Testy funkcjonalne

Zanim przeczytasz ten rozdział, zaleca się abyś przeczytał najpierw dokumentację Selenium oraz dokumentację PHPUnit. W dalszej części streszczamy pokrótce podstawowe zasadu pisania testów funkcjonalnych w Yii.

Zanim opiszemy jak napisać test funkcjonalny, popatrzmy na plik WebTestCase.php wygenerowany przez komendę yiic webapp. Plik ten definiuje WebTestCase, który może służyć jako klasa bazowa dla testów funkcjonalnych wszystkich klas.



Klasa WebTestCase przede wszystkim ustawia adres bazowy URL strony, która będzie testowana. Później, w metodach testujących, możemy używać relatywne adresy URL
w celu określenia, która strona powinna być przetestowana.

Powinniśmy też zwrócić uwagę, na to że w adresie bazowym URL używamy index-test.php jako pliku wejściowego zamiast index.php. Jedyna różnica pomiędzy index-test.php a index.php to ta, że pierwsza używa test.php jako pliku konfiguracji aplikacji, gdy druga używa main.php.

Opiszemy teraz jak przetestować funkcjonalność wyświetlania postów w demo blogu. Najpierw napiszemy klasę testującą w następujący sposób, zauważając iż klasa testowa dziedziczy z klasy bazowej, którą przed chwilką opisaliśmy:



Tak jak pisząc klasy testów jednostkowych, tak i tutaj deklarujemy konfiguracje testuów, które bedziemy używać podczas testowania. Tutaj wkazaliśmy, iż konfiguracja testu Post będzie użyta. W metodzie testującej testShow, najpierw poinstruowaliśmy Selenium RC aby otwarło adres URL post/1. Zauważ, że jest to relatywny adres URL a kompletny adres URL jest utworzony
poprzez dołączenie do niego adresu bazowego URL, który ustawiliśmy w klasie
bazowej (np. http://localhost/yii/demos/blog/index-test.php/post/1). Następnie weryfikujemy czy możemy znaleźć tytuł postu sample1 na aktualnej stronie. Sprawdzamy również, czy strona zawiera tekst Zostaw komentarz.

$Id: test.functional.txt 1662 2010-01-04 19:15:10Z qiang.xue $