prefer-hooks-on-top.md 1.54 KB

Suggest having hooks before any test cases (prefer-hooks-on-top)

All hooks should be defined before the start of the tests

Rule Details

Examples of incorrect code for this rule

/* eslint jest/prefer-hooks-on-top: "error" */

describe('foo', () => {
  beforeEach(() => {
    //some hook code
  });
  test('bar', () => {
    some_fn();
  });
  beforeAll(() => {
    //some hook code
  });
  test('bar', () => {
    some_fn();
  });
});

// Nested describe scenario
describe('foo', () => {
  beforeAll(() => {
    //some hook code
  });
  test('bar', () => {
    some_fn();
  });
  describe('inner_foo', () => {
    beforeEach(() => {
      //some hook code
    });
    test('inner bar', () => {
      some_fn();
    });
    test('inner bar', () => {
      some_fn();
    });
    beforeAll(() => {
      //some hook code
    });
    afterAll(() => {
      //some hook code
    });
    test('inner bar', () => {
      some_fn();
    });
  });
});

Examples of correct code for this rule

/* eslint jest/prefer-hooks-on-top: "error" */

describe('foo', () => {
  beforeEach(() => {
    //some hook code
  });

  // Not affected by rule
  someSetup();

  afterEach(() => {
    //some hook code
  });
  test('bar', () => {
    some_fn();
  });
});

// Nested describe scenario
describe('foo', () => {
  beforeEach(() => {
    //some hook code
  });
  test('bar', () => {
    some_fn();
  });
  describe('inner_foo', () => {
    beforeEach(() => {
      //some hook code
    });
    test('inner bar', () => {
      some_fn();
    });
  });
});