Testování reducerů a async akcí bez integračního prostředí
Na závěr: držte se zásady, že testy mají být deterministické. Nikdy nevolajte skutečné API, nepoužívejte reálné časovače ani náhodná data. Pokud testujete timeouty, použijte falešné hodiny (např. vi.useFakeTimers). Takto otestujete celou logiku Reduxu bez nutnosti spouštět aplikaci – a tím získáte jistotu, že vaše store funguje správně, ať se děje cokoliv.
Verzování kódu ve větších projektech, které používají mnoho knihoven, se snadno zvrtne v chaos, pokud nemáte jasná pravidla. Nejde jen o to, že každý vývojář používá jinou verzi téže závislosti – problém nastává i při nasazování, kdy se najednou objeví nekompatibilita, kterou nikdo nečekal. Zásadní je proto sjednotit způsob správy verzí hned na začátku projektu a udržet ho konzistentní po celou dobu vývoje.
Příklad: pokud testujete načtení uživatelů, vytvořte mock, který vrací pole uživatelů. Po zavolání akce by měly být dispatchovány tři akce: pending, fulfilled (s daty) a nakonec stav s daty. Ověřte pořadí akcí a obsah payloadu. Nezapomeňte testovat i chybový scénář – mock, který vyhodí výjimku, a ověřte, že je dispatchována akce rejected a že stav obsahuje chybu.
Při psaní kódu dodržujte konvence projektu. Každý projekt má svůj styl – jiné odsazování, pojmenovávání proměnných nebo logiku. Většinou to najdete v dokumentaci nebo si všimnete v existujících souborech. Když jste nejistí, nechte se inspirovat staršími commity. Vyvarujte se také velkým a rozsáhlým změnám v jednom PR. Místo toho rozdělte práci na menší logické celky – usnadní to recenzentům práci a zvýší šanci na přijetí.
Pro testování Redux reducerů a async akcí nepotřebujete žádné složité integrační prostředí ani prohlížeč. Stačí vám Node.js, testovací běh (např. Jest nebo Vitest) a čistá funkční logika. Redux je navržen tak, aby byl testovatelný izolovaně – reducery jsou čisté funkce, async akce lze ověřit pomocí mocků a vlastní testovací knihovny.
Vyhněte se těmto častým chybám při správě verzí Nejčastějším pochybením je slepé aktualizování knihoven na nejnovější verze bez čtení changelogu nebo bez testů. Nová verze může změnit chování funkcí, které používáte, nebo dokonce přidat novou tranzitivní závislost s odlišnou licencí. Druhým častým problémem je používání rozsahů verzí v deklaracích, kdy nástroj vybere nejvyšší dostupnou verzi, která splňuje podmínku, a to se může lišit mezi počítačem vývojáře a CI serverem. Vždy proto preferujte přesné verze nebo rozsahy pečlivě ohraničené (např. jen patch verze), a to hlavně u knihoven, které mají časté vydání.
Pro efektivní práci využijte také funkci Runner, která spouští celou kolekci najednou. Můžete nastavit počet iterací, zpoždění mezi požadavky a data z externího souboru (např. CSV). Runner vám dá přehledný report o tom, které testy prošly a které selhaly. Pokud testujete API pravidelně, zvažte použití příkazové řádky s Newmanem, který spustí kolekci bez otevření Postmanu. If you have any inquiries regarding where and how to use http://miklagaard.no/index.php?title=jak_začíT_s_typescriptem_a_vyhnout_se_častým_chybám, you can call us at the web-page. To se hodí pro integraci do CI/CD pipeline. Při psaní testů v Runneru myslete na to, že každá iterace by měla být nezávislá – pokud testujete vytváření záznamu, vždy na konci ověřte, že se záznam smazal, nebo použijte unikátní data.
Postman je nástroj, který se stal standardem pro práci s API. Umožňuje posílat HTTP požadavky, sledovat odpovědi a automatizovat testy. Ať už testujete REST, GraphQL nebo SOAP, správné používání Postmanu vám ušetří hodiny práce. V tomto článku se zaměříme na praktické postupy, na které se často zapomíná, a na typické chyby, které dělají i zkušení vývojáři.
Prvním krokem je najít projekt, který vás baví a odpovídá vašim dovednostem. Pokud nevíte, kde začít, prozkoumejte repozitáře, které používáte v práci nebo osobně. Až si vyberete, pročtěte si soubory jako README, CONTRIBUTING a případně LICENSE. V nich najdete pravidla a pokyny, jak zařídit malou kuchyni se zapojit. Většina projektů má také sekci „issues" nebo „task list", kde jsou označeny úkoly vhodné pro začátečníky – často štítkem „good first issue" nebo „help wanted".
Typické chyby, kterých se vyvarujte: psaní testů až po implementaci (testy pak jen potvrzují chování, ale nechrání před regresí), testování přes uživatelské rozhraní na úrovni jednotkových testů, používání reálných externích služeb v integračních testech (místo toho použijte nástroje pro virtualizaci služeb) a ignorování pomalých testů – pokud je test pomalý, vývojáři ho přestanou spouštět a ztratí jeho hodnotu. Naopak se vyplatí investovat do testovacích dat, která jsou deterministická, a do čistění stavu mezi testy.
Častým problémem je zapomenout na to, že async akce vrací Promise. V testu proto vždy použijte await na zavolání akce, jinak se test ukončí dřív, než se akce dokončí, a vy dostanete falešný průchod. Dále pozor na to, že pokud používáte Redux Toolkit, createAsyncThunk generuje akce pending, fulfilled a rejected automaticky – testujte je podle názvu, ne podle řetězce typu 'users/fetch/pending'.