Lekce 6 - Mockování v PHP - Dependency Injection a Test doubles
V minulé lekci, Testování v PHP - Xdebug a coverage reports, jsme se naučili pracovat s nástrojem Xdebug a generovat code-coverage reporty.
V dnešním PHP tutoriálu si vysvětlíme a ukážeme, co je to tzv. mockování.
Motivace
Naše jednotkové testy zatím pracovaly jen s jednoduchými třídami,
které neměly žádné závislosti. Jak ale testovat třídy,
které potřebují ke svému běhu instance dalších tříd, které potřebují
instance dalších tříd? Často hovoříme o tzv. System Under
Test (SUT), což je jen malá část většího
systému, kterou právě testujeme. Ohledně naší kalkulačky bychom si mohli
představit, že potřebuje ke svému fungování ještě nějaký logger,
který ukládá vypočtené příklady do souboru. To by stále nebyl takový
problém, udělali bychom ještě test loggeru a test kalkulačky by příklady
normálně logoval a my bychom nad tím přimhouřili oko. Ale jak testovat
např. třídy, které pracují s nějakým webovým API? Např. by kalkulačka
výsledky sdílela na Facebooku. Takovou "šílenost" určitě nechceme v
testech reálně spouštět a sdílet při dokončení testu něco na svůj
Facebook. Testy by vůbec neměly vyžadovat ani připojení k internetu, pokud
to není záměr a netestujeme integračním testem komunikaci mezi nějakými
našimi API. Zde přichází na řadu právě mockování, které nám
umožňuje vytvářet "falešné objekty", např. objekt,
který se chová jako instance třídy FacebookApi
, ale ve
skutečnosti poskytuje předpřipravená "falešná" data a volání
metod na něm nezpůsobí skutečný dotaz na Facebook.
Dependency injection
Základním předpokladem k tomu, abychom vůbec mohli mockovat, tedy poskytovat v testech falešné objekty, je Dependency injection. Jedná se o návrhový vzor, který je tak významný, že
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit tento kurz
Před koupí tohoto článku je třeba koupit předchozí díl
Obsah článku spadá pod licenci Premium III, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V tutoriálu si vysvětlíme návrhový vzor Dependency Injection a uvedeme jednotlivé Test doubles - Dummy, Fake, Stub, Spy a samozřejmě Mock.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.