Na co si dát pozor při porovnávání akcí – používejte toBe nebo toEqual na jednotlivé objekty akce, ne na celé pole. Pole akcí může obsahovat různé pořadí, pokud máte více dispatchů najednou. Pokud potřebujete ověřit jakýkoli výskyt akce, použijte expect.arrayContaining. Tím se vyhnete křehkým testům, které selžou jen kvůli změně pořadí. S těmito technikami budete mít sadu testů, které běží v řádu milisekund a dají se spustit kdykoli bez nutnosti běžícího serveru.
Začněte tím, že si rozdělíte testy podle jejich účelu. Jednotkové testy by měly pokrývat čistou logiku, algoritmy a výpočty, které nemají vedlejší efekty. Integrační testy se hodí pro ověření spolupráce mezi moduly, databází, externími službami a API. Pokud je váš kód čistě funkční a nemá mnoho závislostí, převažují jednotkové testy. Jakmile roste počet integračních bodů, musíte posilovat integrační vrstvu, ale s rozmyslem – ne každý spojení potřebuje plnohodnotný test.
Psát responzivní layout jen pomocí floatů nebo inline-blocků je dnes zbytečné utrpení. Moderní prohlížeče umí dvě mocné techniky: Flexbox a CSS Grid. Obě řeší jiný problém. Flexbox je ideální rady pro rekonstrukci rozložení obsahu v jedné ose – třeba navigaci, tlačítka v řadě nebo zarovnání ikony s textem. Grid je naopak dvourozměrný systém, který vám dá plnou kontrolu nad řádky i sloupci zároveň. Když je použijete ve správnou chvíli, přestanete bojovat s rozbitými layouty a začnete je skutečně navrhovat.
Druhá oblast, kde dělají mnozí chyby, je manipulace s proměnnými a stavem. Vyhněte se změnám globálních proměnných a sdílenému stavu. Když funkce mění data mimo sebe, je těžké sledovat, odkud se chyba vzala. Používejte parametry a návratové hodnoty. Pokud potřebujete pracovat s komplexním objektem, vytvořte si z něj nový objekt s upravenými hodnotami, neměňte původní. Tím se vyhnete vedlejším efektům, které způsobují nepredikovatelné chování. V moderním JavaScriptu k tomu máte skvělé nástroje – metody map, filter a reduce. Místo cyklu for, kde měníte pole, použijte map a vytvoříte nové pole. Je to nejen čistší, ale často i rychlejší.
Typická past: test asynchronní akce skončí dřív, In case you have almost any issues about where as well as tips on how to utilize Wiki.Philipphudek.De, you can email us at our own website. než se vyřeší Promise. Vždy používejte async/await a před ukončením testu počkejte na všechny microtasky. Pokud testujete chybový stav, mockujte API tak, aby vracelo zamítnutý Promise, a ověřte, že akce typu failure obsahuje správnou chybovou zprávu. Nezapomeňte na to, že getState musí také vracet konzistentní data – pokud thunk čte z něj nějakou hodnotu, mějte ji připravenou v mocku.
Při práci s databází nebo souborovým systémem se vyhněte reálným závislostem. Používejte mockování, i když to znamená, že test nebude tak „komplexní". Unit test má ověřovat logiku, ne infrastrukturu. Pro integraci s externími službami si vytvořte falešné objekty, které vracejí předem dané odpovědi. Pamatujte, že testy musí být rychlé – pokud jeden test trvá sekundy, vývojáři ho přestanou spouštět. Proto udržujte testovací sadu oddělenou od integračních testů, které běží proti skutečným závislostem.
Sběr metrik je první krok. Zjistěte, kolik času zabere spuštění celé testovací sady. Pokud je to více než pět minut, je to signál, že máte příliš mnoho integračních testů nebo testy nejsou izolované. Automatizujte měření pokrytí, ale nezaměřujte se na čísla, která nic neznamenají. Procento pokrytí řádků není cíl, je to vedlejší efekt. Důležité je, aby testy pokrývaly kritické scénáře, které uživatelé reálně používají. Mapa rizik – seznam modulů, kde chyba způsobí největší škody – vám pomůže rozhodnout, kam investovat testy.
Na závěr jedno varování: testujte na skutečných zařízeních, ne jen v nástroji pro vývojáře. Media queries je důležité nastavit podle obsahu, ne podle konkrétního telefonu. Chcete, aby se layout rozbil ve chvíli, kdy přestane dávat smysl, ne když má displej určitou šířku. Začněte s mobilem, přidejte sloupce pro tablety a nakonec rozšiřte na desktop. Tímto postupem se vyhnete frustraci z layoutu, který se na polovině zařízení rozsype.
Správné použití atributů a Assertů NUnit nabízí atributy jako [SetUp] a [TearDown] pro inicializaci a úklid prostředí. Využívejte je, ale nezneužívejte. Pokud každý test potřebuje jinou konfiguraci, raději vytvořte separátní testovací třídy. Dále se naučte používat Assert.That s constraint syntaxí, která je čitelnější než klasické Assert.AreEqual. Například Assert.That(výsledek, Is.EqualTo(5)) je nejen přehlednější, ale také poskytuje lepší chybové hlášení, když test selže. rady pro rekonstrukci porovnávání čísel s tolerancí použijte Is.EqualTo(0.1).Within(0.01) – tím se vyhnete nepříjemným problémům s plovoucí desetinnou čárkou.