# モックリファクタリング進捗
## 概要
モックの実装方法を改善するための計画に基づいて、以下の作業を完了しました:
1. 共有モックライブラリの基盤実装
- `tests/mocks/` ディレクトリにカテゴリ別のサブディレクトリを作成
- モックカテゴリごとに必要なモック生成関数を実装
- 各モックの使用方法をJSDocコメントとして記載
2. インデックスファイルの整備
- 各カテゴリ内の `index.ts` でサブモジュールをエクスポート
- ルートレベルの `index.ts` でカテゴリをまとめてエクスポート
3. サンプルリファクタリングの実装
- `global-controller-refactored.test.ts` を作成して、新しいモックライブラリの使用例を示す
## 実装したモック
### リポジトリ
- `IJsonDocumentRepository` → `json-document-repository.mock.ts`
- `IBranchMemoryBankRepository` → `branch-memory-bank-repository.mock.ts`
- `IGlobalMemoryBankRepository` → `global-memory-bank-repository.mock.ts`
### サービス
- `IIndexService` → `index-service.mock.ts`
### ユースケース
- `SearchDocumentsByTagsUseCase` → `search-documents-by-tags-usecase.mock.ts`
## 使用方法
モックライブラリは以下のように使用します:
```typescript
import {
// リポジトリモック
createMockJsonDocumentRepository,
createMockBranchMemoryBankRepository,
createMockGlobalMemoryBankRepository,
// サービスモック
createMockIndexService,
// ユースケースモック
createMockSearchDocumentsByTagsUseCase
} from '../../mocks';
// 基本的な使い方 - デフォルト設定
const { instanceRepo: basicRepo } = createMockJsonDocumentRepository();
// カスタマイズした使い方
const { instanceRepo: customRepo } = createMockJsonDocumentRepository(mockRepo => {
// ts-mockitoを使って振る舞いをカスタマイズ
when(mockRepo.findById(deepEqual(new DocumentId('123')))).thenResolve({
// カスタムドキュメント
} as JsonDocument);
});
```
## 次のステップ
1. 既存テストの移行
- `global-controller.test.ts` を実際にリファクタリング
- 優先度の高い順に他のテストファイルを移行
2. 追加モックの実装
- その他のユースケースモックを必要に応じて実装
- より複雑なサービスモックの追加
3. テスト実行の確認
- リファクタリング後もテストが正常に実行されることを確認
- パフォーマンスの検証
4. ドキュメントの整備
- 開発者向けガイドラインの作成
- モックライブラリの使用例を充実