Skip to content
← Back to rules

jest/require-top-level-describe 风格

它的作用

要求测试用例和钩子必须位于顶层的 describe 块内。

为什么这是个问题?

将测试用例和钩子组织在 describe 块中,可以为测试套件提供更好的结构和分组。这使得测试输出更易读,并有助于测试组织,尤其是在大型代码库中。

当测试用例(testit)或钩子(beforeAllbeforeEachafterEachafterAll)未位于顶层的 describe 块内时,此规则会触发警告。

示例

以下为 错误 的代码示例:

javascript
// 在 describe 块上方
test("我的测试", () => {});
describe("测试套件", () => {
  it("测试", () => {});
});

// 在 describe 块下方
describe("测试套件", () => {});
test("我的测试", () => {});

// 钩子同理
beforeAll("我的 beforeAll", () => {});
describe("测试套件", () => {});
afterEach("我的 afterEach", () => {});

以下为 正确 的代码示例:

javascript
// 在 describe 块上方
// 在 describe 块内
describe("测试套件", () => {
  test("我的测试", () => {});
});

// 在嵌套的 describe 块内
describe("测试套件", () => {
  test("我的测试", () => {});
  describe("另一个测试套件", () => {
    test("我的其他测试", () => {});
  });
});

该规则与 eslint-plugin-vitest 兼容。要使用它,请将以下配置添加到你的 .oxlintrc.json 文件中:

json
{
  "rules": {
    "vitest/require-top-level-describe": "error"
  }
}

配置

此规则接受一个包含以下属性的配置对象:

maxNumberOfTopLevelDescribes

type: integer

default: 18446744073709551615

允许在单个测试文件中存在的顶层 describe 块的最大数量。

如何使用

要通过配置文件或 CLI 启用 此规则,可使用:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/require-top-level-describe": "error"
  }
}
bash
oxlint --deny jest/require-top-level-describe --jest-plugin

参考资料