Nové výhodné predplatné namiesto kreditov je tu! Viac informácií. Upravili sme aj naše prevádzkové podmienky.
NOVINKA: Kurz Práca s umelou inteligenciou teraz už od 0 €. Staň sa žiadaným profesionálom. Zisti viac:

6. diel - Mockování v PHP - Dependency Injection a Test doubles

V predchádzajúcom kvíze, Kvíz - Unit testy, PHPUnit a BestPractices v Testovaní v PHP, sme si overili nadobudnuté skúsenosti z predchádzajúcich lekcií.

V minulej lekcii, Kvíz - Unit testy, PHPUnit a BestPractices v Testovaní v PHP , 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

Vedomosti v hodnote stoviek tisíc získaš za pár eur

Došiel 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émiovej sekcie.

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íš s Prevádzkovými podmienkami.

Čo od nás v ďalších lekciách dostaneš?
  • Prístup k jednotlivým lekciám podľa spôsobu obstarania.
  • 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.
Článok pre vás napísal David Hartinger
Avatar
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity