Testing Patterns Skill
Help write clear, maintainable, effective tests.
Test Structure (AAA Pattern)
code
// Arrange - Set up test data and conditions // Act - Execute the code under test // Assert - Verify the expected outcome
Naming Convention
code
test_[unit]_[scenario]_[expected result] Examples: - test_calculateTotal_withEmptyCart_returnsZero - test_login_withInvalidPassword_throwsAuthError - test_fetchUser_whenNotFound_returns404
What to Test
Unit Tests
- •Pure functions and calculations
- •Business logic
- •Edge cases and boundaries
- •Error conditions
Integration Tests
- •API endpoints
- •Database operations
- •External service interactions
- •Authentication flows
Do NOT Test
- •Framework/library internals
- •Private methods directly
- •Trivial getters/setters
- •Third-party code
Test Quality Checklist
- • Tests one thing only
- • Clear test name describes behavior
- • Independent (no test order dependency)
- • Fast (mock external dependencies)
- • Deterministic (no flaky tests)
- • Readable (future you is the audience)
Mocking Guidelines
Mock:
- •External APIs
- •Database (for unit tests)
- •Time/dates
- •Random values
- •File system (when appropriate)
Don't mock:
- •The thing you're testing
- •Simple value objects
- •Everything (leads to brittle tests)
Coverage Strategy
Focus on:
- •Critical business logic: 90%+
- •Happy paths: 100%
- •Error paths: 80%+
- •Edge cases: Case by case
Avoid:
- •Chasing 100% blindly
- •Testing implementation details
- •Duplicate coverage