![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 7.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Aktualnie zajmuje się testowaniem pewnej klasy i natknąłem się przy tym na pewien problem. A mianowicie jak przetestować metody "private" i "protected". Z metodami "protected" jest mniejszy problem gdyż jest możliwość utworzenia klasy pochodnej i upublicznienia interfejsu klasy bazowej do testów, czyli :
Nie ma wiec problemu. A co w przypadku gdy chcemy testować metodę "private". (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Próbowałem dostać się do składowych poprzez Reflection API, ale niestety i ono ma ograniczone pole działania :/ konstrukcje z getClosure() działają tylko z metodami statycznymi. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Jak wyzej. Testujesz tylko metody publiczne, innych (tzn prywatnych i protected) "nie masz" - one sa wytworem refaktoryzacji, powstaly wydzielone z metod publicznych tak zeby kod byl czytelniejszy. Refaktoryzacja wymaga posiadania testow (tzn dobrze by bylo gdyby miec te testy - jest latwiej).
Zaczynasz testowac duza metode publiczna, wydaje ci sie za dluga, te linijki robia to samo co w drugiej metodzie obok - wydzielasz wspolny kod do metody prywatnej. Wydzielasz fragmenty kodu odpowiedzialne za jedna tematycznie rzecz do osobnej metody - prywatnej, itd. Tzn taka jest teoria, jesli zaczynasz od testow a potem metod publicznych to ci wszystko ladnie sie pouklada. i OOP to interfejsy a nie bebechy - a interfejsem sa TYLKO publiczne metody |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 21:08 |