IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Znalosti v hodnotě stovek tisíc získáš za pár korun

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

Koupit všechny aktuálně dostupné lekce s funkcí odevzdávání úloh za pouhých 1 355 Kč
Aktuální stav konta 0 Kč
Koupí tohoto balíčku získáš přístup ke všem 23 článkům (23 lekcí) tohoto kurzu.

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.

Co od nás v dalších lekcích dostaneš?
  • 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íť.

Článek pro vás napsal 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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity