Skip to content
← Back to rules

jest/prefer-hooks-in-order 스타일

작동 방식

호크가 호출되는 순서와 동일한 순서로 설정되도록 보장합니다.

왜 좋지 않은가?

호크는 어떤 순서로 설정해도 되지만, jest에서는 항상 다음 특정 순서로 호출됩니다:

  1. beforeAll
  2. beforeEach
  3. afterEach
  4. afterAll

이 규칙은 테스트 내에서 그룹화된 호크가 해당 순서에 따라 설정되도록 강제함으로써, 이 순서를 더 명확하게 만들고자 합니다.

예시

이 규칙에 부적절한 코드 예시:

javascript
describe("foo", () => {
  beforeEach(() => {
    seedMyDatabase();
  });
  beforeAll(() => {
    createMyDatabase();
  });
  it("이 입력을 수락한다", () => {
    // ...
  });
  it("그 값 반환한다", () => {
    // ...
  });
  describe("데이터베이스에 특정 값이 있을 때", () => {
    const specificValue = "...";
    beforeEach(() => {
      seedMyDatabase(specificValue);
    });
    it("그 입력을 수락한다", () => {
      // ...
    });
    it("오류를 던진다", () => {
      // ...
    });
    afterEach(() => {
      clearLogger();
    });
    beforeEach(() => {
      mockLogger();
    });
    it("메시지를 로깅한다", () => {
      // ...
    });
  });
  afterAll(() => {
    removeMyDatabase();
  });
});

이 규칙에 적절한 코드 예시:

javascript
describe("foo", () => {
  beforeAll(() => {
    createMyDatabase();
  });
  beforeEach(() => {
    seedMyDatabase();
  });
  it("이 입력을 수락한다", () => {
    // ...
  });
  it("그 값 반환한다", () => {
    // ...
  });
  describe("데이터베이스에 특정 값이 있을 때", () => {
    const specificValue = "...";
    beforeEach(() => {
      seedMyDatabase(specificValue);
    });
    it("그 입력을 수락한다", () => {
      // ...
    });
    it("오류를 던진다", () => {
      // ...
    });
    beforeEach(() => {
      mockLogger();
    });
    afterEach(() => {
      clearLogger();
    });
    it("메시지를 로깅한다", () => {
      // ...
    });
  });
  afterAll(() => {
    removeMyDatabase();
  });
});

이 규칙은 eslint-plugin-vitest와 호환됩니다. 이를 사용하려면 .oxlintrc.json에 다음 구성 항목을 추가하세요:

json
{
  "rules": {
    "vitest/prefer-hooks-in-order": "error"
  }
}

사용 방법

이 규칙을 구성 파일 또는 명령줄 인터페이스에서 활성화하려면 다음과 같이 사용할 수 있습니다:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/prefer-hooks-in-order": "error"
  }
}
bash
oxlint --deny jest/prefer-hooks-in-order --jest-plugin

참고 자료