Harman haromfele esetet is mondtunk neked, amikor kellhet a mock/stub, en legalabb ketszer elmondtam, hogy kulso szervizhivasoknal altalaban szokott kelleni, de ugy latszik, akkor nem voltal jelen. Esetleg nem minden tizedik mondatot kellene elolvasni a kommentekbol. De legyen.
Peldaul van a Yahoo Geocoding API, fizetos, raadasul requestenkent szamlaz. A GeoCodingService-nek a unit tesztjeben peldaul nem engednem kihivni a fizetos API-ba, (mert baromi nagy luxus az ilyen), hanem a konkret kulso API objektumot kistubolnam, hogy azt a valaszt adja vissza, amire a tesztnek eppen szuksege van, anelkul, hogy akar egy(!) HTTP hivast is megengedne maganak. Es innentol kezdve akarmilyen pure functionokkel irod meg a GeoCodingService-t, kell a stub, mert kulonben fizethetsz, mint a katonatiszt. Tbh, a GeoCoding eseteben meg talan az integration teszt-nel is kistubolnam a GeoCoding API-t, mert nincs szukseg a valos funkcionalitasra, lenne egy darab teszt eset, ahol kihivok a valodi fizetos API-ba, es garantalom, hogy ez a teszt fenyevente egyszer fut le, a tobbi esetben pedig jo a kistubolt API is.
Es megegyszer: a fenti peldaban tokeletesen irrelevans, hogy hogyan van szervezve a kod. Ha pure functionokkel van megoldva, akkor sem lesz kevesbe fizetos a GeoCoding API.
--
Blog | @hron84
Üzemeltető macik