[custom_add_property_button]
[custom_sign_button]

Jednotkové testy v C# s NUnit: častá chyba, která kazí celý efekt

Druhým často opomíjeným místem je ověření audience a issueru. Token, který podepíše váš server, ale je určený pro jinou aplikaci, by neměl být akceptován. V deklaracích aud a iss byste měli mít přesně specifikované hodnoty a při každém požadavku je porovnat s očekávanými. Bez této kontroly může dojít k tzv. token confusion útokům, kdy token z jednoho systému použijete v jiném. Prakticky to znamená, že v middleware pro JWT nastavíte přísné porovnání obou polí a při neshodě vrátíte chybu 401.

Dalším specifikem je práce s tajným klíčem nebo párem klíčů pro podepisování. Pokud používáte symetrický algoritmus, nikdy nesmí být klíč součástí klientského kódu ani zdrojového kódu v repozitáři. Klíč by měl být uložený v bezpečnostním trezoru nebo v proměnné prostředí na serveru. Pro produkční prostředí zvažte asymetrické podepisování, kdy je privátní klíč jen na straně vydavatele a veřejný klíč slouží k ověření podpisu. To umožňuje decentralizovanou validaci bez sdílení tajemství napříč službami.

Co udělat, než vůbec poprvé spustíte git add Příkaz git add . je pohodlný, ale může být past. Přidá totiž do staging area všechny soubory, které nejsou v .gitignore. Pokud jste na to zapomněli, ocitnou se v commitu i velké soubory, které zpomalují celý repozitář. Vždy si nejprve zkontrolujte, co se bude přidávat. Použijte git status a projděte si seznam souborů. Pokud tam vidíte něco nechtěného, upravte .gitignore nebo použijte git reset pro odebrání konkrétního souboru ze staging area. Teprve poté proveďte commit s jasnou zprávou.

Když začnete psát jednotkové testy v C# s NUnit, první věc, kterou objevíte, je, že samotné psaní testů není to nejtěžší. Největší úskalí přichází ve chvíli, kdy se testy začnou navzájem ovlivňovat a vy ztrácíte přehled o tom, co vlastně testujete. Typická chyba začátečníků? Sdílení stavu mezi testy. Pokud použijete statickou proměnnou, která se mění v jednom testu a ovlivní výsledek druhého, přestanou být testy izolované. A izolace je základní princip, bez kterého se jednotkové testy mění v noční můru.

Typový systém není jen o tom, abyste se vyhnuli chybám, ale také o tom, že se zlepší komunikace mezi vývojáři v týmu. Když vidíte signaturu funkce, hned víte, co očekává a co vrací. Nemusíte procházet celou implementaci, abyste zjistili, jaké parametry funkce přijímá. Díky tomu se urychlí onboardování nových kolegů a zjednoduší se code review. Pokud se naučíte efektivně pracovat s typovými aliasy a rozhraními, vaše kód bude čitelnější a snáze se bude udržovat. Až si osvojíte základy, můžete se pustit do pokročilejších témat, jako jsou mapované typy nebo podmíněné typy. Ty vám umožní vytvářet komplexní typové transformace, které jsou základem moderních TypeScriptových knihoven.

Asynchronní chyby a handling rout Jakmile začnete používat async funkce v routách, narazíte na to, že Express 4 nezachytává výjimky z promise řetězců automaticky. Pokud v async handleru dojde k chybě, Express ji nezpracuje a server může spadnout. Řešením je buď obalit každou trasu pomocnou funkcí, která chybu předá do next(), nebo přejít na Express 5, který async chyby zvládá nativně. Nezapomeňte také na centrální error middleware, který zachytí chyby z celé aplikace a vrátí uživateli smysluplnou odpověď.

Nakonec se zaměřte na bezpečnost. Ověřování tokenů, nastavení CORS a limitování počtu požadavků by nemělo být dovětek, ale základ. Pro produkční nasazení vždy použijte HTTPS, nastavte bezpečnostní hlavičky a ošetřete, aby se k chybovým hláškám nedostaly interní informace. Takové API pak zvládne reálný provoz bez zbytečných průšvihů.

Na závěr si uvědomte, že jednotkové testy nejsou nástroj na hledání chyb, ale na to, aby se chyby neobjevily. Když budete dbát na izolaci, determinismus a testování chování místo implementace, testy vám budou dávat smysl a ušetří vám čas. Pokud naopak uděláte některou z výše zmíněných chyb, čeká vás jenom frustrace a testy, které nikdo nechce spouštět. Takže příště, když napíšete test, zeptejte se sami sebe: je tento test opravdu jednotkový? A pokud ne, upravte ho dřív, než se stane problémem.

Při psaní životopisu se vyhněte obecným frázím jako „jsem pečlivý a zodpovědný”. Místo toho uveďte konkrétní příklad: „Objevil jsem chybu v registračním formuláři na webu X, kde se po odeslání neukázala potvrzovací zpráva, což jsem zdokumentoval a ověřil na dvou prohlížečích.” Taková formulace má mnohem větší váhu. Typickou chybou začátečníků je také bagatelizování chyb, které se nepotvrdí. Vždy je testujte na více místech a zařízeních, než je nahlásíte. Pokud si nejste jistí, raději se zeptejte, než abyste slepě kopírovali cizí postupy.

Please Sign In Before Adding a Property Or Sign Up If You Don't Have An Account