github-pages-deploy-action/node_modules/eslint-plugin-jest/docs/rules/prefer-hooks-on-top.md
James Ives 5af4d9fc85 3.5.0 🎉
2020-05-14 17:33:08 -04:00

1.5 KiB

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