Code Reference

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

HookWhen
beforeAllOnce before suite
beforeEachBefore every test
afterEachAfter every test
afterAllOnce after suite
describeScope hooks & tests

Order: outer beforeAll → inner beforeAllbeforeEach → 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 beforeAll without reset.
  • Async hooks without async/await → races.
  • Leaving test.only in committed code.
  • Heavy beforeEach making suites slow — prefer lighter factories.
  • Global setup importing app modules before mocks are declared.

On this page