Skip to content

Latest commit

 

History

History
96 lines (84 loc) · 1.53 KB

prefer-hooks-on-top.md

File metadata and controls

96 lines (84 loc) · 1.53 KB

Suggest to have all hooks at top-level before tests (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();
    });
  });
});