Agent skill
test-guide
テストの書き方とTDDの実践ガイド
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/test-guide-kami8ma8810-cat-home
SKILL.md
テストガイド
TDD(テスト駆動開発)の基本
Red-Green-Refactor サイクル
- Red: 失敗するテストを書く
- Green: テストが通る最小限の実装をする
- Refactor: コードを改善する(テストは常にグリーン)
TDD のメリット
- 要件が明確になる
- リグレッションを防げる
- リファクタリングが安全にできる
- ドキュメントとして機能する
テストの種類
単体テスト(Unit Test)
- 個々の関数・コンポーネントをテスト
- 依存関係はモック化
- 高速に実行できる
統合テスト(Integration Test)
- 複数のモジュールの連携をテスト
- データベースや API との連携を含む
E2E テスト(End-to-End Test)
- ユーザーの操作フローをテスト
- ブラウザを使った実際の操作
テストの書き方
命名規則
typescript
// describe: テスト対象を記述
describe('PropertySearch', () => {
// it: 期待する動作を記述
it('should filter properties by rent range', () => {
// テスト内容
})
it('should return empty array when no properties match', () => {
// テスト内容
})
})
AAA パターン
typescript
it('should calculate total rent correctly', () => {
// Arrange(準備)
const property = { rent: 80000, managementFee: 5000 }
// Act(実行)
const total = calculateTotalRent(property)
// Assert(検証)
expect(total).toBe(85000)
})
良いテストの特徴
- 独立性: 他のテストに依存しない
- 再現性: 何度実行しても同じ結果
- 明確性: 何をテストしているか分かる
- 高速性: 素早く実行できる
テストすべき内容
必須
- 正常系(ハッピーパス)
- 境界値
- エラーケース
- null/undefined の処理
推奨
- エッジケース
- 非同期処理
- 状態の変化
モックの使い方
基本
typescript
// API コールのモック
vi.mock('@/api/properties', () => ({
fetchProperties: vi.fn(() => Promise.resolve([
{ id: 1, name: 'テスト物件' }
]))
}))
注意点
- モックは最小限に
- 実装の詳細ではなく振る舞いをテスト
- モックが多すぎる場合は設計を見直す
アンチパターン
❌ 避けるべきこと
- 実装の詳細をテスト
- テスト間の依存
- 不安定なテスト(Flaky Test)
- テストのためだけのコード変更
- 過度なモック
✅ 推奨すること
- 振る舞いをテスト
- 1つのテストで1つのことを検証
- 分かりやすいテスト名
- テストも保守しやすく書く
Didn't find tool you were looking for?