Artykuły o technologiach IT, programowaniu, testowaniu i nie tylko

Dlaczego powstał ten artykuł? Po nie tak długim poszukiwaniu nie znalazłem nigdzie jasnej instrukcji jak właściwie uruchomić codeception na yii2 w zaawansowanym szablonie. Cel jest więc prosty – pomóc w szybkiej konfiguracji środowiska do tworzenia testów na Yii2 i Codeception.

Pisanie testów jednostkowych to ważny, jednak trudny element pracy programisty. Często nie ma na to czasu, lub po prostu chęci by je pisać. Tak, to żmudny proces, jednakże przynosi obfite plony. Pozwala nam zwiększyć jakość naszego kodu, wyłapać wiele niewidzianych dotąd problemów w logice i zachowaniu aplikacji. Daje nam możliwość szybszego wdrażania nowych funkcjonalności bez obawy o naruszenie wcześniej napisanego kodu. No i wreszcie daje nam satysfakcję i spokojną głowę, Pamiętajmy jednak, że pisanie testów nie zapewni nas, że oprogramowanie będzie wolne od błędów, wszak możemy popełnić błąd także w testach.

Tyle słowem wstępu. Przejdźmy do praktycznego przykładu włączenia codeception do naszego projektu w Yii2.

Wymagania wstępne

Zanim zaczniemy pracę będziemy potrzebować:

  1. Zainstalowanego XAMPP https://www.apachefriends.org/pl/index.html
  2. Standardowa konsola Windowsa. Po zainstalowaniu codeception z pliku instalacyjnego plecenie codecept będzie ogólnodostępne. Wszystko łącznie z instalowaniem pakietów z composera, możemy bez problemu wykonać za jej pomocą.
  3. Zainstalowanego composera https://getcomposer.org/doc/00-intro.md
pod Windowsem wystarczy ściągnąć i uruchomić plik Composer-Setup.exe
  4. Zainstalowany framework yii2 http://www.yiiframework.com/download/ (advanced application template)
  5. Xdebug w PHP

Xdebug

Xdebug w PHP (jest potrzebny do wygenerowania procentowego pokrycia testami naszych kodów) https://xdebug.org/download.php

W przypadku windows+xampp, sciągamy odpowiednią paczkę i przenosimy ją do katalogu xampp\php\ext. Zmieniamy nazwę na php_xdebug.dll. Następnie edytujemy plik php.ini dodajemy linijkę:


zend_extension = "xampp\php\ext\php_xdebug.dll"

i restartujemy Apacha.

PHP w PATH

Wszystkie polecenia w tym artykule pomijają użycia php z przodu. Jeżeli jednak nie masz dodanego php do ścieżki globalne, możesz to zrobić w następujący sposób:

  • Prawy klik na Mój komputer
  • Klikamy Właściwości → Zaawansowane ustawienia
  • Klikamy Zakładka zaawansowane
  • Klikamy Zmienne środowiskowe
  • Klikamy Zmienne systemowe zaznaczamy Path i naciskamy Edytuj.
  • Na samym końcu dodajemy średnik (;) i dopisujemy ścieżkę do naszego php, np. C:\xampp\php
  • Klikamy OK i restartujemy konsolę.

Alternatywnie przed każdym poleceniem możemy podać ścieżkę do naszego PHP np.

C:\xampp\php\php composer require „codeception/codeception=2.2.2”

Yii 2 Advance Template – Konfiguracja

Aby nasza aplikacja działa poprawnie musimy jeszcze skonfigurować dla niej wirtualne hosty.

W pliku windows/system32/drivers/etc/hosts dodajemy następujące wpisy (oczywiście w miejsce codecepyii.com i adm-codecepyii.com można wpisać swoje nazwy).


127.0.0.1       localhost
127.0.0.1       codecepyii.com
127.0.0.1       adm-codecepyii.com

Następnie w plikach  xampp\apache\conf\extra\httpd-vhosts.conf dodajemy wpisy:

 

 

Restartujemy Apacha.

Powinniśmy być w stanie przejść pod podany przez nas adres, w moim przypadku http://codecepyii.com i zobaczyć stronę powitalną projektu Yii2.

Instalacja codeception

Za pomocą naszej ulubionej konsoli udajemy się do folderu naszej aplikacji i wpisujemy po kolei następujące komendy w celu instalacji codeception.


composer require "codeception/codeception=2.2.2"
composer require "codeception/specify=*"
composer require "codeception/verify=*"

Moduł specify pozwala nam na pisanie testów w bardziej czytelnym stylu BDD, np.:

$this->specify("username is required", function() {
$this->user->username = null;
verify($this->user->validate(['username'])->false());
});

Moduł verify to mały wrapper na asercje PHPUnit, który również pozwala odrobinę poprawić czytelność naszych testów. Przykład:

verify('first user is admin', $user->getRoles())->contains('admin');

Konfiguracja testów

Na tym etapie powinniśmy mieć wszystko co jest potrzebne od uruchomienia naszych testów. Zacznijmy więc od skonfigurowania codeception. W konsoli udajemy się do katalogu projekt/tests/codeception/ i – aby zainicjować codeception  wpisujemy polecenie:

codecept bootstrap

Konfiguracja bazy danych do testów znajduje się w pliku: tests/codeception/config/config-local.php

Na tym etapie jedyne co musimy zrobić w kwestii konfiguracyjnej to ustawić ścieżki dla testów akceptacyjnych w plikach:

tests/codeception/frontend/acceptance.suite.yml w miejscu URL podajemy link do naszej aplikacji frontendowej,

 

 

a w pliku tests/codeception/backend/acceptance.suite.yml w miejscu URL podajemy link do naszej aplikacji backendowej.

 

Następnie musimy zbudować testy do poszczególnych komponentów. W tym celu wchodzimy po kolei w foldery common, backend, frontend, które znajdują się w folderze tests/codeception/ i w każdym z tych katalogów wpisujemy komendę:

codecept build

Teraz, aby uruchomić testy dla poszczególnych komponentów, wchodzimy w folder np. fronted i wpisujemy komendę:

codecept run

W odpowiedzi powinniśmy zobaczyć taki wynik:

yii3

W tym przypadku foldery fronted i backend zawierają testy akceptacyjne, funkcjonalne i jednostkowe. Folder common posiada jedynie testy jednostkowe. To tyle na temat konfiguracji codeception i Yii2. W następnej części dowiemy się jak pisać testy jednostkowe.


  • Rafal

    Wielki dzięki za artykuł. Już raz po chodziłem do tego tematu ale zabrakło wytrwałości. Teraz na pewno się uda.

Nawigacja