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

参考资料