Skip to content
← Back to rules

vitest/consistent-each-for 正确性

它的作用

此规则确保在创建参数化测试时使用的方法保持一致。
该配置会影响不同的测试函数类型(testitdescribesuite)。

为什么这是不好的?

如果没有统一的方式来创建参数化测试,开发者必须记住:
.for 会将值展开为多个独立参数,而 .each 则将数组作为一个单一参数传递。

示例

以下为 错误 的代码示例:

js
// { test: 'for' }
test.each([[1, 1, 2]])("test", (a, b, expected) => {
  expect(a + b).toBe(expected);
});

// { describe: 'for' }
describe.each([[1], [2]])("suite %s", (n) => {
  test("test", () => {});
});

以下为 正确 的代码示例:

js
// { test: 'for' }
test.for([[1, 1, 2]])("test", ([a, b, expected]) => {
  expect(a + b).toBe(expected);
});

// { describe: 'for' }
describe.for([[1], [2]])("suite %s", ([n]) => {
  test("test", () => {});
});

配置

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

describe

type: "for" | "each"

it

type: "for" | "each"

suite

type: "for" | "each"

test

type: "for" | "each"

如何使用

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

json
{
  "plugins": ["vitest"],
  "rules": {
    "vitest/consistent-each-for": "error"
  }
}
bash
oxlint --deny vitest/consistent-each-for --vitest-plugin

参考资料