Setup & Teardown
Jest · Reference cheat sheet
Setup & Teardown
Jest · Reference cheat sheet
📋 Overview
beforeAll / beforeEach / afterEach / afterAll manage lifecycle. Keep setup local to describe blocks; reset mocks and state so tests stay independent.
🔧 Core concepts
| Hook | When |
|---|---|
beforeAll | Once before suite |
beforeEach | Before every test |
afterEach | After every test |
afterAll | Once after suite |
describe | Scope hooks & tests |
Order: outer beforeAll → inner beforeAll → beforeEach → test → afterEach → …
💡 Examples
Typical cleanup:
beforeEach(() => {
jest.clearAllMocks();
});
afterEach(() => {
jest.useRealTimers();
cleanup(); // RTL
});Scoped describe:
describe('db', () => {
let db;
beforeAll(async () => {
db = await connect();
});
afterAll(async () => {
await db.close();
});
test('query', async () => {
expect(await db.ping()).toBe(true);
});
});Global setup files (config):
// jest.config.js
setupFiles: ['<rootDir>/jest.polyfills.js'],
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],// jest.setup.js
import '@testing-library/jest-dom';Skip / only:
describe.skip('wip', () => {});
test.only('focus', () => {});⚠️ Pitfalls
- Shared mutable state in
beforeAllwithout reset. - Async hooks without
async/await→ races. - Leaving
test.onlyin committed code. - Heavy
beforeEachmaking suites slow — prefer lighter factories. - Global setup importing app modules before mocks are declared.