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

型: "for" | "each"

it

型: "for" | "each"

suite

型: "for" | "each"

test

型: "for" | "each"

使用方法

このルールを設定ファイルまたは CLI で有効化するには、次のように使用できます:

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

参照