Po pierwsze, niektóre definicje:
Test jednostkowy testuje jednostki w oderwaniu od innych jednostek, ale to, co to oznacza, nie jest konkretnie zdefiniowane przez żadne wiarygodne źródło, więc zdefiniujmy to nieco lepiej: jeśli granice We / Wy zostaną przekroczone (czy to We / Wy to sieć, dysk, ekran lub wejście interfejsu użytkownika), jest pół-obiektywne miejsce, w którym możemy narysować linię. Jeśli kod zależy od operacji we / wy, przekracza granicę jednostki i dlatego będzie musiał kpić z jednostki odpowiedzialnej za to operacje we / wy.
Zgodnie z tą definicją nie widzę przekonującego powodu, aby wyśmiewać takie rzeczy jak czyste funkcje, co oznacza, że testowanie jednostkowe nadaje się do czystych funkcji lub funkcji bez skutków ubocznych.
Jeśli chcesz testować jednostki z efektami, jednostki odpowiedzialne za efekty powinny być wyśmiewane, ale być może powinieneś rozważyć test integracji. Tak więc krótka odpowiedź brzmi: „jeśli chcesz kpić, zadaj sobie pytanie, czy tak naprawdę potrzebujesz testu integracji”. Ale jest lepsza, dłuższa odpowiedź tutaj, a królicza nora idzie znacznie głębiej. Makiety mogą być moim ulubionym zapachem kodu, ponieważ można się z nich wiele nauczyć.
Zapach kodu
W tym celu przejdziemy do Wikipedii:
W programowaniu komputerowym zapach kodu jest dowolną cechą w kodzie źródłowym programu, która może wskazywać na głębszy problem.
Kontynuuje później ...
„Zapachy to niektóre struktury w kodzie, które wskazują na naruszenie podstawowych zasad projektowania i negatywnie wpływają na jakość projektu”. Suryanarayana, Girish (listopad 2014). Refaktoryzacja dla zapachów projektowania oprogramowania. Morgan Kaufmann. p. 258
Zapachy kodowe zwykle nie są błędami; nie są technicznie niepoprawne i nie uniemożliwiają funkcjonowania programu. Zamiast tego wskazują na słabości w projekcie, które mogą spowolnić rozwój lub zwiększyć ryzyko błędów lub awarii w przyszłości.
Innymi słowy, nie wszystkie zapachy kodowe są złe. Zamiast tego są powszechnymi wskazaniami, że coś może nie być wyrażone w optymalnej formie, a zapach może wskazywać na możliwość poprawienia danego kodu.
W przypadku kpiny zapach wskazuje, że jednostki, które wydają się wołać o kpiny, zależą od jednostek, które mają być kpione. Może to wskazywać, że nie rozłożyliśmy problemu na części, które można rozwiązać za pomocą atomów, a to może wskazywać na wadę projektową oprogramowania.
Istotą całego rozwoju oprogramowania jest proces dzielenia dużego problemu na mniejsze, niezależne części (rozkład) i komponowanie rozwiązań w celu utworzenia aplikacji, która rozwiązuje duży problem (kompozycję).
Wyśmiewanie jest wymagane, gdy jednostki użyte do rozbicia dużego problemu na mniejsze części zależą od siebie. Innymi słowy, kpina jest wymagana, gdy nasze domniemane atomowe jednostki składu nie są tak naprawdę atomowe, a nasza strategia rozkładu nie zdołała rozłożyć większego problemu na mniejsze, niezależne problemy do rozwiązania.
To, co powoduje, że kpiny pachną kodem, nie polega na tym, że z mockiem nie ma nic złego - czasem jest to bardzo przydatne. To, co powoduje, że kod ma zapach, może wskazywać na problematyczne źródło sprzężenia w Twojej aplikacji. Czasami usunięcie tego źródła sprzężenia jest o wiele bardziej produktywne niż pisanie próbnego.
Istnieje wiele rodzajów sprzężenia, a niektóre są lepsze od innych. Zrozumienie, że makiety są zapachem kodu, może nauczyć cię rozpoznawania i unikania najgorszych rodzajów na wczesnym etapie cyklu życia aplikacji, zanim zapach zmieni się w coś gorszego.