Mam metodę, która ma przekazane niektóre obiekty danychdo niego wykonuje obliczenia w celu wypełnienia wcześniej pustych pól na obiektach na podstawie innych pól, a następnie odsyła wyniki. Ta metoda tak naprawdę nie przekracza granic integracji - obiekty danych to encje z dość złożonym drzewem zależności od innych encji, ale z perspektywy tej metody są to po prostu obiekty ze stanem (dziękuję ORM).
Wydaje mi się, że testy jednostkowe takwymagają sprawdzenia stanu - skonfiguruj dane, uruchom kod, aby wykonać obliczenia i sprawdź wyniki. Czy jest to uzasadniony przypadek ignorowania tego, co wydaje się być ogólną radą, że testy powinny sprawdzać zachowanie, a nie stan? A może trochę źle czytam literaturę opartą na testach?
Odpowiedzi:
2 dla odpowiedzi № 1Powiedziałbym, że testujesz zachowanie metody wykonującej obliczenia, więc to nie jest problem.
Niektórzy mogą sugerować, że zachowanie w oddzielnej metodzie (jako usługa), a nie w klasach, które przechowują dane, może oznaczać zapach kodu, ale to inna sprawa.
0 dla odpowiedzi nr 2
Zachowanie polega na tym, że otrzymujesz dany stan wejściowyoczekiwany stan wyjścia. Testy jednostkowe powinny utworzyć obiekty fikcyjne (prawdopodobnie makiety) o znanym stanie, uruchomić testowaną metodę, a następnie sprawdzić, czy wyjście (w tym przypadku jest to stan parametru wejściowego) jest poprawne.