No tak. Oczywiście że też będzie źle :|
A więc uznajemy, że ta antymockowa propaganda nie ma żadnych podstaw, bo każdy użyty argument uderza w nią samą?
Ale w czym problem żeby postawić to KV store lokalnie i w konfiguracji testowej podawać na nie namiary?
Masz na myśli chmurę on-premise czy jakiś emulator? Jeśli pierwsze, to ile to kosztuje? Jeśli to drugie, to jaki emulator polecasz, żeby dał mi gwarancję kompatybilności z wersją KV, która jest używana na produkcji.
Gdy już rozwikłamy te zagadki, to pozostanie jedynie skonfigurowanie tego czegoś razy ilość osób w zespole.
Po co dokładać sobie roboty w jakikolwiek sposób choćby w szukaniu sposobu na zrobienie tego, skoro mocka mogę ogarnąć w nieskończenie mniejszym czasie?
To samo z bazą danych. Dodatkowo mozna na koniec calla zrobic do tych lokalnych instancji zeby sprawdzić czy faktycznie cos tam jest.
Tak, to zrobię w testach integracyjnych albo manualnych. Na późniejszym etapie pracy.
Natomiast faktycznie z zewnętrznymi serwisami typu CI / <wiele serwisów AWS> jest problem, sam chyba bym po prostu mockował w takich przypadkach. Ogolnie 'devopsowe' integracje są wyzwaniem przy testowaniu.
Nie, nie są, trzeba tylko wiedzieć, czy jest jakieś SDK, czy trzeba napisać samemu interakcję po jakimś API. Wówczas już wiadomo co mockować, a testy dalej pisze się banalnie.
Ogólnie polecam (wszystkim, to nie do Ciebie personalnie uwaga), aby nie siedzieć całe życie w projektach jednego rodzaju na bazie jednego frameworka i zobaczyć jak bardzo różne rodzaje softu wymagają różnych sposobów testowania, i jak bardzo różne podejścia trzeba czasem mieć nawet wewnątrz jednego projektu.
Też widziałem spaghetti-testy, które betonowały implementację z testami, ale to wynikało po pierwsze z chorego podejścia, że każda klasa musi mieć interfejs, a skoro jest interfejs, to go trzeba mockować, a po drugie z istnienia ogromnych god-objectów pełnych spaghetti i dziesiątek zależności. (Takie coś powstaje, gdy się nie ogarnia wzorców projektowych.)
Robienie czegoś tam, to było zakrzywianie czasoprzestrzeni, bo nie wiadomo ani gdzie zacząć, ani kiedy skończyć. No, ale to nadal nie była wina mocków, że ktoś najpierw skopał desing, a potem ich użył niezgodnie z przeznaczeniem w 100 razy więcej miejscach niż były rzeczywiście przydatne.
W końcu jaki jest wniosek jeśli chodzi o testowanie side effectów ? ;p
Czyli np publikowanie eventów albo wysyła maili?
Chyba taki, że nie powinieneś ich testować, bo nie powinieneś ich mieć i prawidziwi pogramiści™ ich nie maja. A w ogóle to #walićbiznes #tylkonajnowszebuzzwordy i #najpierwarchitekturapotemwymagania. Jeśli biznes chce, żeby wysyłać maile, to mu wyjaśnij, że to jest nieprawidłowe technicznie, bo to side effect, a poza tym nikt nie czyta teraz maili, lepiej wrzucić na insta albo od razu na tiktoka.