Zaawansowana aplikacji Yii 2 korzysta z Codeception jako głównego frameworka testowego.
Kilka przygotowanych przykładowych testów można znaleźć w folderze tests
w frontend
, backend
i common
.
Poniżej opisana procedura zakłada, że aplikacja została zainicjowana dla środowiska dev
. W przypadku testowania
środowiska Production
należy ręcznie skopiować pliki yii_test
i yii_test.bat
z folderu environments/dev
do
głównego folderu projektu.
Proces testowania wymaga dodatkowej bazy danych, która będzie czyszczona pomiędzy poszczególnymi testami.
Stwórz bazę danych MySQL o nazwie yii2advanced_test
(zgodnie z konfigurację pliku common/config/test.php
) i uruchom:
./yii_test migrate
Zbuduj pakiet testowy:
vendor/bin/codecept build
Teraz wszystkie przykładowe testy można uruchomić za pomocą:
vendor/bin/codecept run
Rezultat będzie podobny do poniższego:
Zalecane jest ciągłe aktualizowanie swoich testów. W przypadku, gdy klasa lub funkcjonalność jest usuwana, odpowiadające
jej testy również powinny być skasowane.
Testy powinno się przeprowadzać regularnie, a najlepiej jest przygotować do tego celu serwer Ciągłej Integracji.
Przeczytaj artykuł Yii 2 Framework Case Study, aby zapoznać się z konfiguracją Codeception dla swojej aplikacji.
Testy dla klas folderu common umieszczone są w common/tests
. W tym szablonie przygotowane zostały jedynie testy
jednostkowe
.
Uruchomisz je za pomocą:
vendor/bin/codecept run -- -c common
Opcja -c
pozwala na ustawienie ścieżki do pliku konfiguracyjnego codeception.yml
.
Testy jednostkowe
pakietu (umieszczone w common/tests/unit
) mogą korzystać z funkcjonalności frameworka Yii:
Yii::$app
, Active Record, fixtures, itp. Jest to możliwe dzięki modułowi Yii2
dodanemu w konfiguracji
common/tests/unit.suite.yml
(moduł można wyłączyć, aby przeprowadzać testy w izolacji od głównego frameworka).
Pakiet testowy części Frontend składa się z testów jednostkowych, funkcjonalnych i akceptacyjnych.
Uruchomisz je za pomocą:
vendor/bin/codecept run -- -c frontend
Opis poszczególnych pakietów:
unit
⇒ klasy związane jedynie z aplikacją front-end.functional
⇒ wewnętrzne żądania i odpowiedzi aplikacji (bez serwera web).acceptance
⇒ aplikacja web, interfejs użytkownika i interakcje z użyciem JavaScript w prawdziwej przeglądarce.Domyślnie testy akceptacyjne są wyłączone. Poniżej znajdziesz instrukcję ich uruchamiania:
Aby przeprowadzić testy akceptacyjne, wykonaj następujące kroki:
Zmień nazwę pliku frontend/tests/acceptance.suite.yml.example
na frontend/tests/acceptance.suite.yml
, aby włączyć konfigurację pakietu
Zamień pakiet codeception/base
w pliku composer.json
na codeception/codeception
, aby zainstalować pełną wersję Codeception
Zaktualizuj zależności używając Composera
composer update
Wygeneruj automatycznie nowe pomocnicze klasy dla testów akceptacyjnych:
vendor/bin/codecept build -- -c frontend
Pobierz Serwer Selenium i uruchom go:
java -jar ~/selenium-server-standalone-x.xx.x.jar
Uruchom serwer web:
php -S 127.0.0.1:8080 -t frontend/web
Teraz już możesz uruchomić wszystkie dostępne testy
vendor/bin/codecept run acceptance -- -c frontend
Aplikacja back-end zawiera testy jednostkowe i funkcjonalne. Uruchomisz je za pomocą:
vendor/bin/codecept run -- -c backend