2012-10-30 19 views
5

Co jest zalecanym sposobem wywoływania tych metod w przypadku testowania jednostkowego magicznych metod w PHP?Testowanie jednostek Metody magiczne

widzę trzy opcje:

  • Wywoływanie je jawnie/bezpośrednio:

    $object->__get('someValue');

  • Wywoływanie je pośrednio (za pomocą cokolwiek akcja ma na celu ich wywołania):

    $object->someValue; \\ Where __get() is implemented.

  • Wywołanie ich za pomocą obu metod.

Czy istnieje Unit Testing weteranów, które mogłyby wyjaśnić, które (jeśli w ogóle) będzie oczywistym wyborem i dlaczego to może być?

(ten jest prawdopodobnie tańczy blisko do subiektywnych/debata terytorium, ale zadam w nadziei, że istnieją pewne ogólnie przyjęte zasady należy rozważyć, gdy zbliża się to pytanie.)

+0

Powiedziałbym, że zarówno – JvdBerg

+0

Nie jestem ekspertem, ale wydaje się, że pierwszy doprowadziłby do lepszych (samo) udokumentowanych testów. – SomeKittens

Odpowiedz

6

Powinieneś testowania obserwowalne zachowanie. Tak więc, drugi test() musi być przetestowany, bez wątpienia.

Jeśli chodzi o bezpośrednie wywoływanie gettera, jest to raczej odwołanie do wyroku. Kiedy już powiedziałeś: __get('someProperty'), moim zdaniem jesteś już tak mocno osadzony w kamieniu, że jest to magiczna właściwość. Ponieważ próbuję nigdy nie zmieniać testów, to trochę komplikuje sytuację, jeśli z jakiegoś powodu chcę, żeby to była zwykła, nie-magiczna właściwość. Po stronie plusów możesz zadzwonić do gettera i odebrać nieruchomość w drugą stronę i upewnić się, że oba mają dokładnie taki sam wynik.