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);
});
});