Skip to content
← Back to rules

jest/no-duplicate-hooks スタイル

何をするか

describe ブロック内での重複するフックの使用を禁止します。

なぜ問題なのか

describe ブロック内で同じ種類のフックが複数存在すると、混乱や予期しない動作を引き起こす可能性があります。
同じ種類のフックが複数ある場合、すべてが順番に実行されるため、テストのセットアップフローを理解しにくくなり、
重複するまたは矛盾する操作が発生するリスクがあります。これにより、テストの保守性やデバッグが難しくなります。

このルールに対して誤りなコードの例:

javascript
describe("foo", () => {
  beforeEach(() => {
    // 一部のセットアップ
  });
  beforeEach(() => {
    // 一部のセットアップ
  });
  test("foo_test", () => {
    // 一部のテスト
  });
});

// ネストされた describe のシナリオ
describe("foo", () => {
  beforeEach(() => {
    // 一部のセットアップ
  });
  test("foo_test", () => {
    // 一部のテスト
  });
  describe("bar", () => {
    test("bar_test", () => {
      afterAll(() => {
        // 一部の後処理
      });
      afterAll(() => {
        // 一部の後処理
      });
    });
  });
});

このルールに対して正しいコードの例:

javascript
describe("foo", () => {
  beforeEach(() => {
    // 一部のセットアップ
  });
  test("foo_test", () => {
    // 一部のテスト
  });
});

// ネストされた describe のシナリオ
describe("foo", () => {
  beforeEach(() => {
    // 一部のセットアップ
  });
  test("foo_test", () => {
    // 一部のテスト
  });
  describe("bar", () => {
    test("bar_test", () => {
      beforeEach(() => {
        // 一部のセットアップ
      });
    });
  });
});

このルールは eslint-plugin-vitest と互換性があります。
使用するには、.oxlintrc.json に以下の設定を追加してください:

json
{
  "rules": {
    "vitest/no-duplicate-hooks": "error"
  }
}

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/no-duplicate-hooks": "error"
  }
}
bash
oxlint --deny jest/no-duplicate-hooks --jest-plugin

参照