jest/prefer-hooks-in-order 风格
它做了什么
确保钩子按照它们被调用的顺序进行排列。
为什么这是不好的?
虽然钩子可以以任意顺序设置,但 jest 总是按以下特定顺序调用它们:
beforeAllbeforeEachafterEachafterAll
此规则通过强制在测试中分组的钩子按该顺序设置,使这一点更加明显。
示例
此规则的 错误 代码示例:
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"
}
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"plugins": ["jest"],
"rules": {
"jest/prefer-hooks-in-order": "error"
}
}bash
oxlint --deny jest/prefer-hooks-in-order --jest-plugin