# テスト標準

[目的: 何をテストするか、テストをどこに置くか、どう構成するかを示す]

## 基本方針
- 実装ではなく振る舞いをテストする
- 高速で信頼できるテストを優先する。壊れやすいモックは最小限にする
- クリティカルパスを深くカバーする。100% を追い求めるより、広さ（重要箇所の網羅）を重視する

## 構成
選択肢:
- 同居（co-located）: `component.tsx` + `component.test.tsx`
- 分離: `/src/...` と `/tests/...`
どちらかを既定とし、根拠があれば例外を許容する。

命名:
- ファイル: `*.test.*` または `*.spec.*`
- スイート: テスト対象は何か。ケース: 期待される振る舞い

## テストの種類
- ユニット: 単一ユニット、依存はモック化、非常に高速
- 統合（Integration）: 複数ユニットを組み合わせる、外部のみモック化
- E2E: フロー全体、モックは最小限、クリティカルな経路のみ

## 構造（AAA）
```typescript
it('Y のとき X する', () => {
  // Arrange（準備）
  const input = setup();
  // Act（実行）
  const result = act(input);
  // Assert（検証）
  expect(result).toEqual(expected);
});
```

## モックとデータ
- 外部（API／DB）をモックする。テスト対象システム自体はモックしない
- ファクトリ／フィクスチャを使う。テスト間で状態をリセットする
- テストデータは最小限かつ意図が読み取れるものにする

## カバレッジ
- 目標: [全体の %]。クリティカルなドメインはより高く
- CI で閾値を強制する。例外にはレビュー上の根拠を要する

---
_パターンと意思決定に焦点を当てること。ツール固有の設定は別の場所に置く。_
