はじめに
この記事では、Jestを使用して異なるテストデータで同じ内容のテストを行う際にit.each
を用いる方法について紹介します。it.each
に関する詳細は、公式ドキュメントを参照してください。
動作環境
使用したNode.jsのバージョン:
node -v
v18.12.1
each
関数の活用
each
関数を使用することで、異なるテストデータに対して同じテストを効率的に実行できます。これにより、コードの重複を減らすことが可能です。
テスト対象の関数
以下の関数に対するテストコードを作成します。
sum.ts
export function sum(a: number, b: number): number {
return a + b;
}
each
関数を使用しない場合
each
関数を使用しない場合のテストコードは以下のようになります。
sum.test.ts
import { sum } from "./sum";
it("1と2を足すと3になる", () => {
expect(sum(1, 2)).toBe(3);
});
it("1と-10を足すと-9になる", () => {
expect(sum(1, -10)).toBe(-9);
});
each
関数を使用する場合
each
関数を使用すると、テストコードは以下のようにシンプルになります。
sum.test.ts
it.each`
a | b | expected
${1} | ${2} | ${3}
${1} | ${-10} | ${-9}
`("$aと$bを足すと$expectedになる", ({ a, b, expected }) => {
expect(sum(a, b)).toBe(expected);
});
実行結果:
npm test src/section2/sum.test.ts
> jest-lesson@1.0.0 test
> jest src/section2/sum.test.ts
PASS src/section2/sum.test.ts
✓ 1と2を足すと3になる (2 ms)
✓ 1と-10を足すと-9になる (1 ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 1.466 s, estimated 2 s
Ran all test suites matching /src\/section2\/sum.test.ts/i.
each
関数を使用することで、定義したパラメータごとに独立したテストケースを実行でき、テストケース名にそれらの変数を含めることが可能です。