テスト: コードの品質保証
Vitest/Jest でユニットテスト。安心してリファクタ。
ユニットテスト
関数単位のテスト。
モック
依存関係を偽物に置き換え。
スナップショット
出力を保存して比較。
テスト基礎
手動でポチポチ確認するのは時間がかかり、ミスも見逃します。自動テスト(Vitestなど)があれば、「昨日の修正が原因で、1ヶ月前の機能が壊れた」といったデグレ(リグレッション)を確実に防げます。安心してリファクタリングするための命綱です。
// Vitest / Jestimport { describe, it, expect } from 'vitest';
describe('Calculator', () => { it('adds two numbers', () => { expect(add(2, 3)).toBe(5); });
it('throws on invalid input', () => { expect(() => add('a', 'b')).toThrow(); });});
// 実行// npm run test// npm run test:watchBad
// ❌ Bad: テストなしfunction add(a, b) { return a + b;}// 動くかどうかは実行するまで不明Good
// ✅ Good: テストで保証function add(a, b) { return a + b;}test('add', () => expect(add(2, 3)).toBe(5));パターン
// セットアップ & ティアダウンbeforeEach(() => { // 各テスト前に実行});
afterEach(() => { // 各テスト後に実行});
// モックimport { vi } from 'vitest';
const mockFn = vi.fn().mockReturnValue(42);expect(mockFn()).toBe(42);expect(mockFn).toHaveBeenCalled();
// 非同期テストit('fetches data', async () => { const data = await fetchData(); expect(data).toBeDefined();});
// スナップショットexpect(component).toMatchSnapshot(); Tip: テストファイルは .test.ts か .spec.ts にする。
合格ライン
describe/it/expect を使える
モック関数を作成できる
演習課題
課題1: テスト作成
describe/it/expect でテストを作成してください。
課題2: モック
モック関数を使ってテストしてください。