tkrd-stack

学習ノート

自分の理解を深めるための技術メモ

← 一覧に戻る

Jest

概要

  • JavaScript のテストフレームワーク。
  • TypeScript で書くことも可。
  • js、ts で書かれたものであれば全てテスト可能。

環境構築

  • 必要なパッケージ群
    • jest
    • ts-jest
    • @types/jest

jest

  • 本体

ts-jest

  • jest を TypeScript に対応させるもの。

@types/jest

  • jest の型定義ファイル。

設定ファイルの作成

  • jest で TypeScript コードがテスト可能にする設定。
npx ts-jest config:init

テスト方法

 テストの対象

関数

  • 関数を export する。
export function isZero(value: number): boolean {
  return value === 0;
}
  • test.ts ファイルを作成。
  • 対象をインポートする。
  • テストする。
    • expect を使う。
    • matcher を使う。
  • 期待している値になっているかを記述。
import { isZero } from "./isZero";

test("value is zero", () => {
  const result = isZero(0);
  expect(result).toBe(true);
});

React コンポーネント

testing-library

  • UI コンポーネントをテストするためのライブラリ群。
  • コンポーネントに対する操作などができる。

Jest

  • スナップショットテストを行える。

テストを実行する

  • jest を実行する。
npm test

テスト結果

成功

Debugger attached.

> test
> jest

 PASS  ./isZero.test.ts
 PASS  ./check.test.ts
  ● Console

    console.log
      OK

      at Object.<anonymous> (check.test.ts:2:11)

Test Suites: 2 passed, 2 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        3.892 s, estimated 4 s
Ran all test suites.

失敗

Debugger attached.

> test
> jest

 PASS  ./check.test.ts
  ● Console

    console.log
      OK

      at Object.<anonymous> (check.test.ts:2:11)

 FAIL  ./isZero.test.ts
  ● value is not zero

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

      13 | test('value is not zero', () => {
      14 |   const result = isZero(1);
    > 15 |   expect(result).toBe(true);
         |                  ^
      16 | });
      17 |

      at Object.<anonymous> (isZero.test.ts:15:18)

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 failed, 3 passed, 4 total
Snapshots:   0 total
Time:        4.232 s
Ran all test suites.