Lekce 01.5: Jak spouštět cvičení (How To Run the Exercises)
🧠 Mentální model & teoretický rozbor
Nejefektivnější způsob, jak donutit AI model psát správný kód, je TDD smyčka (Test-Driven Development):
┌─────────────────────────────────────────────────────────────┐│ 1. RED (Červená fáze) ││ Existuje selhávající test přesně definující cíl. ││ Agent vidí přesný stack trace a důvod selhání. │└──────────────────────────────┬──────────────────────────────┘ │┌──────────────────────────────▼──────────────────────────────┐│ 2. GREEN (Zelená fáze) ││ Agent napíše minimální implementační kód. ││ Spustí test znovu -> test projde. │└──────────────────────────────┬──────────────────────────────┘ │┌──────────────────────────────▼──────────────────────────────┐│ 3. REFACTOR & COMMIT ││ Vyčistění kódu s jistotou, že testy chrání funkcionalitu.││ Okamžitý čistý commit do Gitu. │└─────────────────────────────────────────────────────────────┘Proč je TDD s agentem 10x účinnější než psaní kódu naslepo?
Protože výstup testu slouží jako externí, deterministický arbitr. Model nemusí hádat, zda kód funguje – výsledek testu mu dá jasnou zprávu: buď EXIT CODE 0 (úspěch), nebo AssertionError (přesný popis chyby).
🏢 Realistický scénář z praxe
Potřebujete naimplementovat funkci pro výpočet DPH podle státu doručení v košíku.
- Bez testu: Agent vygeneruje funkci, vy ji zkopírujete do projektu, spustíte aplikaci, ručně naklikáte košík v prohlížeči, zjistíte, že pro Německo počítá 20 % místo 19 %, vrátíte se do chatu… (ztráta 15 minut).
- S TDD: Napište test s 5 státy. Předáte ho agentovi se slovy: „Zprovozni tento test.“ Agent během 15 sekund upraví sazby, spustí
vitest run vat.test.tsa skončí s ověřeným výsledkem.
💻 Konkrétní ukázky kódu & promptů
Ukázka selhávajícího testu ve Vitestu (src/services/__tests__/tax.test.ts):
import { describe, it, expect } from 'vitest';import { calculateTax } from '../tax';
describe('calculateTax', () => { it('správně spočítá základní sazbu pro Českou republiku (21 %)', () => { const result = calculateTax(1000, 'CZ'); expect(result).toEqual({ net: 1000, tax: 210, gross: 1210 }); });
it('správně aplikuje sníženou sazbu na knihy v CZ (0 %)', () => { const result = calculateTax(500, 'CZ', { isBook: true }); expect(result).toEqual({ net: 500, tax: 0, gross: 500 }); });
it('vyhodí chybu pro neznámý kód země', () => { expect(() => calculateTax(100, 'XX' as any)).toThrowError('UnsupportedCountryError'); });});Inženýrský prompt pro exekuci TDD:
Zadání: V souboru src/services/__tests__/tax.test.ts je připraven selhávající test.Implementuj funkci calculateTax v src/services/tax.ts tak, aby všechny testy prošly.
Pravidla:- Definuj striktní TypeScript typy pro vstupy a výstupy.- Nevytvářej žádné další soubory.- Ověř výsledek spuštěním: `npx vitest run src/services/__tests__/tax.test.ts`.⚠️ Analýza selhání & Anti-patterns
Zásadní chyba: Spouštění celé testovací sady repozitáře
Pokud v sezení spustíte npm test a v repozitáři je 150 testů:
- Výstup zabere 1 500 řádků terminálu.
- Do kontextu se nasype 15 000 tokenů irelevantního výstupu.
- Doporučení: VŽDY omezte spuštění testu na jediný soubor a přidejte přepínač pro okamžité zastavení při chybě (
--bail 1).
🛠️ Inženýrský postup krok za krokem (Playbook)
- Vytvořte testovací soubor
[nazev].test.ts. - Definujte požadované vstupy a očekávané výstupy.
- Spusťte test v terminálu – ujistěte se, že selhává z očekávaného důvodu (např. funkce není definována).
- Předejte úkol Claude Code s filtrem na tento test.
- Po zeleném výsledku zkontrolujte kód a commitněte.
🧪 Praktické cvičení (Hands-on Lab)
Úkol:
Napište jednoduchý selhávající test pro validaci e-mailové adresy a nechte agenta implementovat řešení.
Kroky:
- Vytvořte
src/validator.test.ts. - Otestujte, že
isValidEmail('user@domain.cz')vracítrueaisValidEmail('invalid-email')vracífalse. - Spusťte Claude Code a vyzvěte ho, aby test opravil. Sledujte, jak agent sám test spouští a vyhodnocuje chyby.