vitest/prefer-hooks-in-order Style
它的作用
确保 hooks 按照它们被调用的顺序排列。
为什么这不好?
虽然 hooks 可以以任意顺序设置,但 jest 总是按以下特定顺序调用它们:
beforeAllbeforeEachafterEachafterAll
该规则旨在通过强制分组的 hooks 在测试中按该顺序设置,使这一点更加明显。
示例
以下是此规则的错误代码示例:
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();
});
});如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"plugins": ["vitest"],
"rules": {
"vitest/prefer-hooks-in-order": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
plugins: ["vitest"],
rules: {
"vitest/prefer-hooks-in-order": "error",
},
});bash
oxlint --deny vitest/prefer-hooks-in-order --vitest-plugin版本
此规则于 v0.6.0 中添加。
