<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.rettungsdienstblog.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Margarito2965</id>
	<title>Rettungsdienst-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.rettungsdienstblog.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Margarito2965"/>
	<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Spezial:Beitr%C3%A4ge/Margarito2965"/>
	<updated>2026-10-13T21:48:05Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=Testy_reducer%C5%AF_a_thunk%C5%AF_zvl%C3%A1dnete_i_bez_b%C4%9B%C5%BE%C3%ADc%C3%ADho_prohl%C3%AD%C5%BEe%C4%8De&amp;diff=401547</id>
		<title>Testy reducerů a thunků zvládnete i bez běžícího prohlížeče</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Testy_reducer%C5%AF_a_thunk%C5%AF_zvl%C3%A1dnete_i_bez_b%C4%9B%C5%BE%C3%ADc%C3%ADho_prohl%C3%AD%C5%BEe%C4%8De&amp;diff=401547"/>
		<updated>2026-10-01T19:15:43Z</updated>

		<summary type="html">&lt;p&gt;Margarito2965: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neignorujte chybová hlášení. Podrobná chybová zpráva z databáze prozradí názvy tabulek, sloupců i typy dat a útočníkovi výrazně usnadní další postup. V produkčním prostředí proto zapněte obecné chybové stránky a podrobnosti logujte pouze na server. Totéž platí pro ladící nástroje, které nesmí být veřejně dostupné.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Základní test vypadá tak, že zavoláte reducer s výchozím stavem a akcí a porovnáte výsledek s očekávaným objektem. Nepište testy tak, že jen zkontrolujete, že se stav změnil. Zkontrolujte konkrétní pole, jejich hodnoty a to, že ostatní části stavu zůstaly nedotčené. Častá chyba je sdílený výchozí stav mezi testy: pokud ho reducer mutuje, jeden test ovlivní druhý. Vždy vytvářejte čistou kopii stavu před každým testem, ideálně pomocí tovární funkce.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Před podpisem smlouvy si zjisti, jak vypadá běžný den. Na pohovoru se ptej, kdo bude tvůj mentor, jak často probíhá code review a jestli se testy píšou před nebo po nasazení. Slušná odpověď zní konkrétně: jméno, frekvence, nástroj. Vyhýbavé „nějak to řešíme&amp;quot; znamená, že to neřeší. Stejně důležité je zjistit, jestli tým používá verzovací systém a jak řeší konflikty větví. Pokud ne, budeš trávit čas ručním kopírováním souborů.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejčastější past je testování thunků přes skutečný store. Store vytváří vedlejší efekty, drží stav mezi testy a nutí vás řešit middleware. Pro izolovaný test stačí obyčejná funkce dispatch, která volání ukládá do pole. Další chyba je zapomenutý return u thunku. Pokud thunk nevrací promise, test skončí dřív, než async akce doběhne, a vy dostanete falešně zelený výsledek. Vždy vracejte promise a v testu na něj čekejte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Práce ve větvi je bezpečná jen tehdy, když víš, kde jsi. git branch vypíše větve, git switch -c nova-vetev vytvoří a přepne. Častá chyba: upravovat soubory, pak přepnout větev a divit se, že změny „zmizely&amp;quot;. Git je nemaže, jen je nechá v pracovním adresáři a přepnutí buď zablokuje, nebo je přenese jinam. Před přepnutím buď změny commitni, nebo je odlož pomocí git stash. Sloučení (git merge) přináší konflikty — nejsou porucha, jsou normální stav. Otevři označené soubory, vyber správnou verzi, odstraň značky &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;, pak soubor přidej a commit dokonči.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Async akce testujte přes falešný dispatch a injektovaný klient Asynchronní akce nejsou čisté, protože komunikují s okolím. Klíčem je izolovat to okolí. Místo skutečného HTTP klienta předáte akci objekt s metodou, kterou v testu nahradíte. Akce by měla klienta dostat jako argument nebo přes thunk extra argument, ne ho importovat přímo. Pak v testu vytvoříte falešného klienta, jehož metoda vrací předpřipravený promise, a zachytíte všechny dispatch volání do pole. Po dokončení akce zkontrolujete pořadí a obsah dispatch volání.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Než uděláte první potvrzení změn, založte soubor, který vyjmenuje ignorované cesty. Bez něj se do historie dostanou tisíce souborů z knihoven a každá změna závislosti zaplaví rozdíly, ve kterých se nedá nic najít. Stejně důležité je nastavit jméno a e-mail, protože podle nich se přiřazují jednotlivé změny. Pak teprve inicializujte repozitář a přidejte první dávku souborů. Kontrolujte, co se chystá k uložení, a to ještě před samotným potvrzením.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pozor na dvě věci, které lidi pletou. Za prvé, vysoké pokrytí neznamená kvalitu. Můžete mít devadesát procent a přesto propouštět chyby do produkce. Za druhé, nízké pokrytí nemusí být problém, pokud jde o kód, který se nemění a je triviální. Rozhodujte podle rizika, ne podle čísla v přehledu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pokrytí kódu testy se často bere jako univerzální metrika kvality. Jenže číslo samo o sobě nic neříká o tom, zda testy skutečně odhalují chyby. Tým, který honí stovku procent, často píše testy, jež procházejí, ale nic netestují. První krok je přestat se ptát „kolik procent máme&amp;quot; a začít se ptát „co nám ty testy skutečně zachytí&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;U async akcí se vyplatí testovat tři scénáře: úspěch, chybu a okamžik před dokončením. U úspěchu ověřte, že se nejdřív odešle akce o zahájení a pak akce s daty. U chyby zkontrolujte, že se odešle akce s chybou a že se nezavolá úspěšná větev. U zpožděné odpovědi ověřte, že se stav nemění, dokud promise nedoběhne. Nepoužívejte pevné časovače typu setTimeout v testech, pokud to jde; místo toho použijte promise a čekejte na jeho vyřešení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Reducery jsou čisté funkce. To je jejich největší výhoda při testování: na vstupu dostanou stav a akci, na výstupu vrátí nový stav. Nepotřebujete k tomu žádné integrační prostředí, server ani prohlížeč. Stačí testovací runner, který umí spouštět JavaScript, a knihovna pro aserce. Pokud reducer zapisuje do globálního stavu, sahá na Date.now() nebo na Math.random(), přestává být čistý a testy začnou být křehké. Takové závislosti vytáhněte do parametrů akce nebo je obalte vlastním modulem, který v testu nahradíte.&lt;/div&gt;</summary>
		<author><name>Margarito2965</name></author>
	</entry>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=Benutzer:Margarito2965&amp;diff=401546</id>
		<title>Benutzer:Margarito2965</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Benutzer:Margarito2965&amp;diff=401546"/>
		<updated>2026-10-01T19:15:41Z</updated>

		<summary type="html">&lt;p&gt;Margarito2965: Die Seite wurde neu angelegt: „Někdo, kdo světem interiérů žije už dlouho. Píšu o tom, jak skloubit funkčnost s teplem domova. Nejvíc mě baví popisovat postupy krok za krokem.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Někdo, kdo světem interiérů žije už dlouho. Píšu o tom, jak skloubit funkčnost s teplem domova. Nejvíc mě baví popisovat postupy krok za krokem.&lt;/div&gt;</summary>
		<author><name>Margarito2965</name></author>
	</entry>
</feed>