5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

Jestで効率化する: it.eachを使った異なるデータセットでのテスト実行方法

Last updated at Posted at 2024-01-11

はじめに

この記事では、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関数を使用することで、定義したパラメータごとに独立したテストケースを実行でき、テストケース名にそれらの変数を含めることが可能です。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?