Unit testing
Overview
Unit tests exercise small pieces of code: usually a single function or class, in isolation, using mocks or stubs for collaborators. Fast, deterministic unit suites are the foundation of refactoring confidence and short feedback loops in CI.
Key concepts
- AAA pattern: Arrange, Act, Assert.
- Isolation: Control time, I/O, and randomness; avoid flakiness.
- Test doubles: Mocks, fakes, stubs, spies (terminology varies by framework).
- Coverage: Line/branch coverage is a signal, not a goal.
- Naming: Tests document expected behavior for future readers.
Unit test flow
Sample: Jest-style test
import { sum } from './math';
describe('sum', () => {
it('adds two numbers', () => {
expect(sum(2, 3)).toBe(5);
});
});