【JavaScript, Test】テストコードを書く際に「no-conditional-in-test」を設定しておく

こんにちは。野中やすおです。

最近テストコードを書く際にno-conditional-in-testというESLintエラーで時々怒られます。ということで調べてみました。

no-conditional-in-testとは何か?

JavaScriptのテストフレームワーク( JestやVitestなど)で使用されるESLintのルールの1つです。

このルールの目的は、テストケース内での条件文(if、else、switch、? : など)の使用を防ぐことにあります。

そもそもテストケースは、特定の入力に対する出力を検証するためのものです。

しかし、条件文を使用するとテストの実行結果が入力データや外部状態に依存するようになり、テストの予測可能性や再現性が損なわれる恐れがあります。また条件文をテストに含めてしまうと網羅性を担保することが難しくなります。

よってこうした条件文を防ぐためにno-conditional-in-testを設定し、Lintエラーを出します。

no-conditional-in-testの例

上記の例では、テストの中で条件文が入っていてLintエラーになります。またテストの挙動が不透明になり、特定の条件がテストされているか不明確になりやすいです。
上記の例では、if statementを除外して、すっきりしたテストになっています。

参考

JestやVitestにおけるno-conditional-in-testのプラグインを参考にしました。

https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-conditional-in-test.md

https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md