6. diel - Mockování v PHP - Dependency Injection a Test doubles
V minulej lekcii, Testovanie v PHP - Xdebug a coverage reports , sme sa naučili pracovať s nástrojom Xdebug a generovať code-coverage reporty. V dnešnom PHP tutoriálu začneme posledný tému spojené s unit testy a tým je mockování.
Motivácia
Naše jednotkové testy zatiaľ pracovali len s jednoduchými triedami,
ktoré nemali žiadne závislosti. Ako ale testovať triedy,
ktoré potrebujú k svojmu behu inštancie ďalších tried, ktoré potrebujú
inštancie ďalších tried? Často hovoríme o tzv. System Under
Test (SUT), čo je len malá časť väčšieho
systému, ktorú práve testujeme. Ohľadne našej kalkulačky by sme si mohli
predstaviť, že potrebuje k svojmu fungovaniu ešte nejaký logger, ktorý
ukladá vypočítané príklady do súboru. To by stále nebol taký problém,
urobili by sme ešte test loggeru a test kalkulačky by príklady normálne
logoval a my by sme nad tým prižmúrili oko. Ale ako testovať napr. Triedy,
ktoré pracujú s nejakým webovým API? Napr. by kalkulačka výsledky
zdieľala na Facebooku. Takúto "šialenosť" určite nechceme v testoch reálne
spúšťať a zdieľať pri dokončení testu niečo na svoj Facebook. Testy by
vôbec nemali vyžadovať ani pripojenie k internetu, ak to nie je zámer a
netestujeme integračným testom komunikáciu medzi nejakými našimi API. Tu
prichádza na rad práve mockování, ktoré nám umožňuje vytvárať
"falošné objekty", napr. Objekt, ktorý sa chová ako
inštancia triedy FacebookApi
, ale v skutočnosti poskytuje
predpripravená "falošná" dáta a volanie metód na ňom nespôsobí
skutočný dotaz na Facebook.
Dependency injection
Základným predpokladom k tomu, aby sme vôbec mohli Mocková, teda poskytovať v testoch falošné objekty, je Dependency injection. Jedná sa o návrhový vzor, ktorý je tak významný, že
...koniec náhľadu článku...
Pokračuj ďalej
Minul si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiové sekcie.
Obmedzená ponuka: Nauč sa všetko a ušetri
Pred kúpou tohto článku je potrebné kúpiť predchádzajúci diel
Obsah článku spadá pod licenciu Premium III, kúpou článku súhlasíš so zmluvnými podmienkami.
- Neobmedzený a trvalý prístup k jednotlivým lekciím.
- Kvalitné znalosti v oblasti IT.
- Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.
Popis článku
Požadovaný článok má nasledujúci obsah:
V tutoriálu si vysvetlíme návrhový vzor Dependency Injection a uvedieme jednotlivé Test doubles - Dummy, Fake, Stub, Spy a samozrejme Mock.
Kredity získaš, keď podporíš našu sieť. To môžeš urobiť buď zaslaním symbolickej sumy na podporu prevádzky alebo pridaním obsahu na sieť.