Lekce 9 - Testování v PHP - Unit testy komerčních aplikací I
V minulé lekci, Mockování v PHP - Fake, Codeception Stub a AspectMock, jsme dokončili mockování v PHPUnit, Codeception a AspectMock.
Abychom byli co nejlépe vybavení do praxe, budeme se věnovat přehledu
zajímavých situací a postupů v unit testech, které jsem vybral z testů
reálných komerčních aplikací, zejména z rozsáhlých testů systému
sítě ITnetwork.cz. Pochytíte z nich jak testovat obtížnější scénáře,
naučíte se mockovat nativní PHP funkce, mockovat superglobální pole
$_GET
, $_POST
a $_FILES
, testovat
generátory náhodných dat, porovnávat obrázky s tolerancí a další
zajímavé testovací techniky.
Mockování data a času
Mějme třídu, umožňující registrovat cron úlohy (plánované úlohy). Ve webových aplikacích je často potřeba vykonávat různé akce v časových intervalech. Asi nejjednodušším příkladem je odesílání novinek emailem, které se musí posílat po dávkách např. jen několika set emailů za hodinu, jinak by byl váš server chápán emailovými providery jako spamovací. Další podobné akce jsou různé upomínače událostí, postování na sociální sítě, synchronizace kurzů měn, zpracování logů a podobně.
Jakmile máte ve vaší aplikaci nastavených desítky cronů, je velmi
obtížné se v nich vyznat a spravovat je přes administraci serveru. Z toho
důvodu jsme si vytvořili třídu TaskRunner
, kterou napojíme na
jedinou cron událost, která se vykonává každých 5 minut.
TaskRunner
poté sám spouští další události tak, jak v něm
jsou zaregistrované.
Jak ale třídu testovat, když vnitřně používá nativní PHP funkci
time()
? Abychom v testu nemuseli čekat třeba hodinu, vytvoříme
si vlastní
...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 ukážeme, jak v unit testech v PHP pomocí PHPUnit mockovat datum a čas a tak simulovat jeho změny a testovat reakce knihoven na tyto změny.
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íť.