5 praktických rad pro psaní testů v C# s NUnit
페이지 정보

본문
Správné použití atributů a Assertů NUnit nabízí atributy jako [SetUp] a [TearDown] pro inicializaci a úklid prostředí. Využívejte je, In the event you loved this informative article and you wish to receive more details regarding zjistit více i implore you to visit the webpage. ale nezneužívejte. Pokud každý test potřebuje jinou konfiguraci, Http://Ingeekswetrust.de/ 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. Pro 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.
Při práci s databází se vyhněte přímému psaní SQL dotazů do controllerů. Místo toho použijte repozitáře nebo ORM nástroj, který vám usnadní mapování na objekty. Typickou chybou začátečníků je zapomínat na asynchronní zpracování – pokud použijete async/await, vždy obalujte kód do try-catch bloků, jinak vám unhandled rejection způsobí pád serveru. Express od verze 4 sice chyby v async funkcích nepředává automaticky do error handleru, takže si musíte poradit sami. Řešením je buď malý wrapper, který funkci obalí a chybu předá dál, nebo přechod na Express 5, kde už je to ošetřené.
Pište v přítomném čase a v rozkazovacím způsobu, jako byste dávali příkaz k aplikaci změny: „Přidej validaci e-mailu", „Oprav přetečení bufferu". Vyhnete se tak podivným tvarům jako „přidána validace" nebo „přidání validace". Také se vyhněte minulému času, který je běžný v některých nástrojích, ale v češtině působí nepřirozeně a ztěžuje čtení logu. Před odesláním commitu si zkontrolujte, jestli je popis pravdivý a jestli nezmiňujete interní čísla úkolů bez kontextu. Pokud odkazujete na ticket, uveďte i krátký popis, protože číslo samo o sobě nic neřekne.
Když už mluvíme o chybách, nezapomeňte na centrální error handler. Ten se definuje jako middleware se čtyřmi argumenty (err, req, res, next) a měl by být připojený jako poslední. V něm logujte chybu na serveru a klientovi vracejte pouze bezpečnou zprávu, ne detaily o zásobníku volání. Typickou chybou je vracet celý stack trace – to je užitečné při vývoji, ale v produkci zbytečně odhaluje vnitřní strukturu aplikace. Také si dejte pozor na CORS, pokud API voláte z jiné domény, nastavte správně hlavičky, jinak vám prohlížeč odpovědi zablokuje.
Když píšete unit testy byt v paneláku C# s frameworkem NUnit, nejde jen o to, abyste pokryli co nejvíce řádků kódu. Důležité je, aby testy byly spolehlivé, rychlé a hlavně srozumitelné pro každého, kdo k nim přijde za půl roku. NUnit nabízí širokou škálu nástrojů, ale jejich nesprávné použití dokáže nadělat víc škody než užitku. Základním pravidlem je testovat chování, ne implementaci. Když test svážete s konkrétními interními detaily třídy, každá sebemenší změna v kódu rozbije test, i když funkčnost zůstává zachována.
Validace vstupů je oblast, kterou mnoho vývojářů podcení. Nikdy nevěřte datům, která přijdou od klienta – ověřte je hned na začátku handleru. Můžete použít knihovny jako Joi nebo zod, ale klidně postačí i jednoduché kontroly typu, zda je pole přítomné a má očekávaný typ. Pokud validaci přeskočíte, riskujete neočekávané chování a bezpečnostní díry, jako je NoSQL injection nebo neplatné ID v databázových dotazech. Důležité je také správně nastavit status kódy odpovědí: 200 pro úspěch, 201 pro vytvoření, 400 pro špatný požadavek, 401 pro nepřihlášeného uživatele a 404, když zdroj neexistuje. Klient by měl z odpovědi poznat, co se stalo, i bez čtení těla zprávy.
Dobrá commit message by měla odpovídat na otázku „proč", ne „co". Pokud přidáváte nový parametr do funkce, vysvětlete, že bez něj nelze zpracovat požadavky s časovým pásmem uživatele. Pokud měníte logiku řazení, uveďte, že stávající řešení selhávalo u položek se stejným datem. Typickou chybou je opisovat změny typu „upravena funkce getData" nebo „fix bugs". Taková zpráva je k ničemu, protože nenese žádnou informaci o důvodu ani o souvislostech. Stejně tak se vyhněte emotikonům, vtipům a zkratkám, které jsou srozumitelné jen vám.
Prvním krokem k ochraně je použití parametrizovaných dotazů. Většina moderních jazyků a frameworků nabízí připravené dotazy, které oddělují SQL syntaxi od dat. Například v PHP s PDO použijte prepare() a bindParam(), v Pythonu s psycopg2 zase %s zástupné znaky. Tím se uživatelský vstup nikdy nestane součástí SQL příkazu, ale je předán jako hodnota. Vyhnete se tak ručnímu escapování, které je náchylné na chyby a v některých případech nedostatečné.
Důležité je také sledovat a logovat chybová hlášení. V produkčním prostředí nikdy nezobrazujte uživatelům detaily o chybách databáze – tyto informace pomáhají útočníkovi při cíleném útoku. Místo toho zaznamenávejte chyby do interního logu, který je přístupný pouze administrátorům. Pravidelně kontrolujte tyto logy na podezřelé vzory, jako je opakovaný výskyt SQL klíčových slov ve vstupních parametrech. Zároveň používejte webové firewally, které dokážou filtrovat známé útoky SQL injection dříve, než dorazí k aplikaci.
- 이전글파워약국 공식몰 신규 회원 이벤트 총정리 26.08.30
- 다음글Jak ograniczyć hałas od sąsiadów bez generalnego remontu 26.08.30
댓글목록
등록된 댓글이 없습니다.
