クイックリファレンス

Jest テスティングフレームワーク チートシート

Jestの包括的リファレンスガイド:CLIオプション、マッチャー、モック関数 jest.fn とスパイ、スナップショットテスト、非同期コード検証、セットアップ/ティアダウンフック。

· 公開日

Jest は、設定不要(Zero-config)、高速な実行、およびスナップショットテストに重点を置いた快適なJavaScriptテストフレームワークです。

テスト実行とCLIオプション(CLI Flags)

jest                           # すべてのテストを実行
jest --watch                   # インタラクティブなウォッチモードでテストを実行
jest --coverage                # コードカバレッジレポートを生成
jest path/to/test.js           # 特定のテストファイルを指定して実行
jest -t "test name pattern"    # テスト記述名パターンでフィルタリング
jest --runInBand               # 単一プロセス内でテストを直列実行

主要マッチャー(Common Matchers)

// 真偽値と等価性の検証
expect(val).toBe(42);                  // 厳格な等価比較(Object.is)
expect(val).toEqual({ a: 1 });         // オブジェクト・配列の深い構造的等価比較
expect(val).toStrictEqual({ a: 1 });   // 型のプロトタイプまで厳密にチェック
expect(val).toBeNull();
expect(val).toBeDefined();
expect(val).toBeTruthy();
expect(val).toBeFalsy();

// 数値と数値比較
expect(val).toBeGreaterThan(3);
expect(val).toBeGreaterThanOrEqual(3.5);
expect(val).toBeCloseTo(0.3, 5);       // 浮動小数点演算の丸め誤差を許容した比較

// 文字列と配列
expect(str).toMatch(/regex/);
expect(arr).toContain('item');
expect(arr).toHaveLength(3);

// 例外とエラーハンドリング
expect(() => compileCode()).toThrow();
expect(() => compileCode()).toThrow(ConfigError);

非同期コードのテスト(Asynchronous Code)

test('resolves with data', async () => {
  const data = await fetchData();
  expect(data).toHaveProperty('status', 200);
});

test('handles promise rejection', async () => {
  await expect(fetchData('invalid')).rejects.toThrow('Not Found');
});

モック関数とスパイ(jest.fn() & Spies)

const mockFn = jest.fn().mockReturnValue('mocked result');
mockFn('arg1');

expect(mockFn).toHaveBeenCalledTimes(1);
expect(mockFn).toHaveBeenCalledWith('arg1');

// Mocking module methods
const spy = jest.spyOn(api, 'getUser').mockResolvedValue({ id: 1, name: 'Alice' });
const user = await api.getUser(1);
expect(spy).toHaveBeenCalled();
spy.mockRestore(); // オリジナルの実装に戻す

スナップショットテスト(Snapshot Testing)

test('renders correctly', () => {
  const tree = renderer.create(<Button label="Submit" />).toJSON();
  expect(tree).toMatchSnapshot();
});

セットアップとティアダウン(Setup and Teardown)

beforeAll(() => database.connect());
afterAll(() => database.disconnect());
beforeEach(() => database.clear());
afterEach(() => jest.clearAllMocks());

関連リファレンス

関連テーマ