![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Testy jednostkowe w PHPUnit i PHP 5.3.
Mam następujące klasy (oczywiście to schemat z jedynie kluczowymi elementami kodu):
Teraz chodzi o to, że chcę przetestować czy FirstClass::testedMethod zwraca poprawne dane, bo jest to metoda uzywana przez kilka metod publicznych klasy FirstClass i to w niej zawarta jest istotna funkcjonalnosc logiczna. Pozostale metody wywolujace testedMethod w zasadzie jedynie przetwarzaja i dekoruja wynik zwrocony z testedMethod(). Problem w tym, ze musze zamokować metodę SecondClass::getValue, bo w warunkach testowych zupelnie odpada jej uzycie: odwoluje sie do zewnetrznych zasobow niedostepnych w srodowisku testowym, jest zlozona, zwraca nieprzewidywalne wyniki itd. - wiadomo o co chodzi ![]() Wszystko bylo by proste, gdyby metoda FirstClass::testedMethod() byla publiczna - ale jest prywatna i chce, zeby taka pozostala. Czy można w PHPUnit przetestować bezpośrednio testedMethod() dla różnych podanych parametrów z jednoczesnym mockiem na metodę SecondClass::getValue, która ma zwracać stałą wartość? Czy to jest w ogóle możliwe? Wiem jak: - testować metody prywatne/chronione (za pomocą refleksji) ale bez użycia mocka (w tym przypadku na SecondClass::getValue()) - jak testować publiczną metodę FirstClass::testedMethod() z mockowanym wywołaniem SecondClass::getValue(). Ale nie potrafię zrobić tego gdy testedMethod jest prywatna a muszę mieć zamockowane użycie SecondClass:getValue(). Da się? Jak? Ten post edytował irmidjusz 10.09.2012, 22:10:42 -------------------- there is much to be learned
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 17:16 |