Skip to content
← Back to rules

jest/no-conditional-in-test 細心な

何をするか

テスト内での条件付き文の使用を禁止します。

なぜ悪いのか

テスト内の条件付き文は、テストの読みやすさと理解のしやすさを低下させます。各テスト関数には1つのテストケースを設けるのが望ましいです。

このルールに違反する不適切なコードの例:

js
it("foo", () => {
  if (true) {
    doTheThing();
  }
});

it("bar", () => {
  switch (mode) {
    case "none":
      generateNone();
    case "single":
      generateOne();
    case "multiple":
      generateMany();
  }

  expect(fixtures.length).toBeGreaterThan(-1);
});

it("baz", async () => {
  const promiseValue = () => {
    return something instanceof Promise ? something : Promise.resolve(something);
  };

  await expect(promiseValue()).resolves.toBe(1);
});

このルールに準拠する正しいコードの例:

js
describe("my tests", () => {
  if (true) {
    it("foo", () => {
      doTheThing();
    });
  }
});

beforeEach(() => {
  switch (mode) {
    case "none":
      generateNone();
    case "single":
      generateOne();
    case "multiple":
      generateMany();
  }
});

it("bar", () => {
  expect(fixtures.length).toBeGreaterThan(-1);
});

const promiseValue = (something) => {
  return something instanceof Promise ? something : Promise.resolve(something);
};

it("baz", async () => {
  await expect(promiseValue()).resolves.toBe(1);
});

このルールは eslint-plugin-vitest と互換性があります。 これを使用するには、.oxlintrc.json に以下の設定を追加してください:

json
{
  "rules": {
    "vitest/no-conditional-in-test": "error"
  }
}

使用方法

このルールを有効にするには、設定ファイルまたは CLI を使用して以下のように指定できます:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/no-conditional-in-test": "error"
  }
}
bash
oxlint --deny jest/no-conditional-in-test --jest-plugin

参照