tdd
Test-Driven Development
Philosophy
Core principle: Tests should verify behavior through public interfaces, not implementation details. Code can change entirely; tests shouldn't.
Good tests are integration-style: they exercise real code paths through public APIs. They describe what the system does, not how it does it. A good test reads like a specification — "user can checkout with valid cart" tells you exactly what capability exists. These tests survive refactors because they don't care about internal structure.
Bad tests are coupled to implementation. They mock internal collaborators, test private methods, or verify through external means (like querying a database directly instead of using the interface). The warning sign: your test breaks when you refactor, but behavior hasn't changed.
Anti-Pattern: Horizontal Slices
More from habonn/portal-skills
daily-commit-summary
|
26commit
Smart git commit workflow using Conventional Commits format with AI-generated commit message suggestions based on staged changes.
22skill-auditor
|
11e2e
Create or update Playwright E2E tests following the project's Page Object Model structure. Use /e2e create for new modules or /e2e update for existing ones.
6sprint-commit-summary
|
6test-ts
Generate TypeScript/Vitest unit tests by analyzing source file flow and ensuring 80%+ coverage.
5