Jak mluvit s klientem o termínech, aniž byste slibovali nemožné
Při testování chybových stavů postupujte stejně, ale mock funkce necháte vyhodit výjimku. Ověřte, že je dispatchována akce pro chybu, a že stav aplikace zůstává konzistentní. Častou chybou je testovat pouze šťastnou cestu. Přitom ošetření chyb je v Reduxu kritické, protože uživatel musí vidět, že něco selhalo, a aplikace se nesmí zhroutit. Dále si dejte pozor na to, abyste nemockovali příliš mnoho. Pokud mockujete i samotný dispatch, ztrácíte kontrolu nad tím, co testujete.
Dalším důležitým pravidlem je netestovat implementaci, ale chování. Nezáleží na tom, jak přesně thunk vypadá uvnitř, ale jaké akce vyvolá a v jakém pořadí. Proto se vyhněte kontrole, jestli byla volána nějaká konkrétní funkce kromě dispatch. Místo toho se zaměřte na to, co uživatel nebo další části aplikace skutečně vidí. Tento přístup vám umožní později změnit interní strukturu akce bez nutnosti přepisovat testy, pokud zůstane zachováno chování.
Dalším častým problémem je nedostatečná komunikace. Když dva vývojáři editují stejný soubor, konflikt je nevyhnutelný. Proto si v týmu nastavte pravidla, kdo pracuje na které části kódu. Využívejte nástroje pro sledování úkolů a přiřazování vlastnictví. Pokud přesto konflikt nastane, nebojte se komunikovat přímo s kolegou, který soubor upravoval – rychleji najdete společné řešení, než jen slepě mergovat.
Častou chybou vývojářů je ignorování stavů prvků: hover, focus, active, disabled. Tyto stavy nejsou jen kosmetické – pomáhají uživatelům orientovat se v rozhraní. Ujistěte se, že focus je vždy viditelný, ne jen v prohlížeči, ale i pro uživatele s klávesnicí. Zaměřte se také na to, aby byly chybové hlášky srozumitelné a konkrétní – místo „Chyba 500" napište „Uložení se nezdařilo, zkuste to prosím znovu".
Když začnete psát první unit test, nejčastější chybou je snaha pokrýt najednou příliš mnoho logiky. Test by měl ověřovat přesně jednu osvětlení v obývákuěc – jednu funkci, jednu metodu, jeden scénář. Než začnete, otevřete si kód, který chcete testovat, a napište si na papír tři základní věci: co funkce přijímá, co vrací a jaké má vedlejší efekty. Pokud funkce komunikuje s databází, soubory nebo sítí, test se výrazně zkomplikuje – proto je lepší začít u čistých funkcí, které jen zpracují vstup a vrátí výstup.
Začněte u rozvržení. Používejte konzistentní mezery a zarovnání. Místo abyste každý prvek umísťovali na pixel přesně podle návrhu, naučte se pracovat s layoutovými systémy, jako je CSS Grid nebo Flexbox. Ty vám umožní vytvořit responzivní design bez zbytečných hacků. Dbejte na to, aby měly prvky dostatečný odstup – příliš natěsnané rozhraní působí chaoticky a zvyšuje chybovost při klikání. Ideální výška klikacího prvku by měla být alespoň 44 pixelů, ale to neberte jako dogma, spíš jako minimální doporučení.
Častou chybou je také testovat implementaci místo chování. Když se zaměříte na to, jak funkce pracuje uvnitř, test se stane křehkým – jakmile změníte vnitřní logiku, test se rozbije, i když funkce funguje správně. Místo toho porovnávejte vstup a výstup. vrací správný výsledek, je jedno, jestli používá cyklus nebo rekurzi. Další pastí jsou takzvané testy, které nic nekontrolují – třeba takové, které jen zavolají funkci a nic neověřují. Takový test je k ničemu, protože neřekne, jestli kód funguje.
Nezapomínejte na časté a malé commity. Každá logicky ucelená změna by měla být samostatným commit s výstižným popiskem. To usnadňuje revizi, ale i případný reverz. Vyhněte se commitům typu „oprava překlepu" – ty patří do předchozího commitu. Ideální je, když každý commit představuje jednu funkcionalitu nebo opravu, kterou lze samostatně nasadit. Tím se snižuje riziko, že při slučování větví vezmete i nechtěné změny.
Při práci s textem dbejte na čitelnost. Používejte dostatečný kontrast mezi textem a pozadím – doporučuje se minimálně 4,5:1 pro běžný text. Řádková výška kolem 1.5 a maximální délka řádku 60–75 znaků usnadní čtení. Vyhněte se textům v obrázcích, protože nejsou škálovatelné a špatně se čtou na mobilu. Místo toho používejte živý text, který se přizpůsobí velikosti obrazovky.
Pro efektivní práci je vhodné použít feature flags – skryté přepínače, které umožní začlenit část kódu barvy stěn do obýváku hlavní větve, aniž by byl funkčně aktivní. Tím se vyhnete dlouhým žijícím větvím, které se obtížně slučují. Místo toho průběžně začleňujte malé části práce, ale funkci aktivujte až po dokončení a otestování. Tento přístup snižuje riziko konfliktů a usnadňuje code review.
Jak správně postavit testovací scénář Základ každého unit testu je trojice: připrav, proveď, ověř. V přípravě vytvoříte vstupní data, a to včetně okrajových hodnot – prázdný řetězec, nulu, záporné číslo nebo prázdný seznam. Tyto okrajové případy dělají testy užitečnými, protože právě na nich se logika nejčastěji láme. Při samotném provedení voláte jen testovanou funkci, a to s připravenými daty. Ověření pak porovnává skutečný výsledek s očekávaným. Pozor na to, abyste v jednom testu nekombinovali více kontrol – pokud první kontrola selže, nezjistíte, jestli by prošla druhá.