2013-03-15 13 views
9

Moja aplikacja Yii uzyskuje zasięg phpunit w kontrolerach, modelach, komponentach, modułach, ale nie ma widoków. Problem polega na tym, że program ładujący kod w phpunit zawiera plik widoku podczas przygotowywania raportu zasięgu. Widoki z formularzami mają wywołania $this->beginWidget, co powoduje awarię, ponieważ nie ma $ w tym kontekście.Testowanie phpunit yii z widokami w zasięgu

Widoki naprawdę nie mają ważnego kodu ani logiki, ale mimo to mają pewne warunki, a nawet pętle, aby zadzwonić pod numer renderPartial, więc dobrze byłoby, aby kod widoku również był objęty.

Czy istnieje rozwiązanie tego problemu?

+0

Świetne pytanie! Chciałbym, aby większy nacisk położono na testy jednostkowe i funkcjonalne w przewodnikach ramowych i książkach niż na standardową funkcjonalność, którą można się nauczyć w ciągu 10 minut. – AndrewPK

Odpowiedz

4

Czy próbowałeś przedłużyć CWebTestCase? Generalnie podczas pisania testów jednostkowych masz urządzenia i rzeczy niezbędne do dostarczenia niezbędnych danych - ale dzięki testom wyświetleń i testom "funkcjonalnym" dla aplikacji internetowych na ogół łatwiej jest naśladować przeglądarkę i sprawić, by działała ona w aplikacji internetowej jako jeśli użytkownik faktycznie go używał. Obecnie to naśladowanie jest najłatwiejsze z Selenium (moim zdaniem).

Przewodnik Yii na Functional Testing jest dobrym miejscem do rozpoczęcia pracy, podobnie jak Selenium Documentation. Jest też this book, który idzie dalej za pomocą selenu (nie jestem pewien, czy to najnowsze wydanie, ale wiem, że poprzednie wydanie z datą publikacji: 11 sierpnia 2010 r. Zrobiło), a Larry Ullman's Yii Book będzie miał rozdziały dotyczące testowania i użycia Selen w testach funkcjonalnych po ukończeniu tego rozdziału.

Mam nadzieję, że to pomoże!

Aktualizacja do dalszego wyjaśnienia CWebTestCase

CWebTestCase rozciąga PHPUnit_Extensions_SeleniumTestCase która bezpośrednio realizuje funkcjonalnego testowania fundament, który można wykorzystać w ciągu PHPUnit w celu zbadania poglądów, tworzenia widgetów badanie wewnątrz poglądów, twierdzą, że tekst nie istnieje " kliknij na linki, itd. Testy te są nadal uruchamiane z wiersza poleceń, chociaż wymagają uruchomienia serwera Selenium-RC po uruchomieniu testu i wymagają skonfigurowania prawidłowej przeglądarki. Ważny przeglądarka może być skonfigurowana tak mało kodu, jak poniższe umieszczony wewnątrz setUp() funkcję:

$this->setBrowser('*firefox /usr/lib/firefox/firefox-bin'); 

stwierdzając, że pokrycie kodu nie mogą być świadczone przez CWebTestCase Nie jest prawdą, jak CWebTestCase rozciąga PHPUnit_Extensions_SeleniumTestCase, która udostępnia następujące jako cytat z the documentation:

PHPUnit_Extensions_SeleniumTestCase może zbierać pokrycie kodu informacje o testach wykonywanych przez Selen:

Copy PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php do twojego katalogu głównego serwera WWW. W pliku konfiguracyjnym php.ini na serwerze internetowym, należy skonfigurować

PHPUnit/Extensions/SeleniumTestCase/prepend.php i PHPUnit/Extensions/SeleniumTestCase/append.php

jako odpowiednio auto_prepend_file i auto_append_file,.W swojej klasie testu przypadku, rozciąga PHPUnit_Extensions_SeleniumTestCase użyć

protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';

skonfigurować adres URL skryptu phpunit_coverage.php.

+0

Moje testowanie to konsolowe modele sprawdzania, a akcje i nawet wykonywanie Xpath zapewnia na wyjściu html. Raport dotyczący pokrycia widoków zrobionych przez phpunit jest problemem. Selen też przyzwyczajenie kodu obejmuje linie php w widokach. – thevikas

+0

Proszę zobacz mnie zaktualizowaną odpowiedź poniżej - Wierzę, że CWebTestCase zapewnia dokładnie to, czego szukasz z powodu rozszerzenia 'PHPUnit_Extensions_SeleniumTestCase'. Jeśli tak nie jest, nie rozumiem twojego pytania wystarczająco i przepraszam, że nie mogę być bardziej pomocny. – AndrewPK

Powiązane problemy