Skip to main content
Glama

Memory Bank MCP Server

by t3ta
e2e-test-approach-notes.json4.42 kB
{ "schema": "memory_document_v2", "metadata": { "id": "e2e-test-approach-notes", "title": "統合APIコントローラーのE2Eテスト実装アプローチ", "documentType": "technical_notes", "path": "e2e-test-approach-notes.json", "tags": [], "createdAt": "2025-04-11T17:00:00.000Z", "lastModified": "2025-04-10T16:40:34.258Z" }, "content": { "sections": [ { "title": "テスト実装の課題と解決策", "content": "## 課題\n\n`write_document`と`read_document`のEnd-to-Endテストを実装しようとした際に、以下の課題が発生しました:\n\n1. MCPクライアントを使用したテスト:\n - SDKクライアントからのツール呼び出し(`tools/call`)に対応していなかった\n - routes.tsに新しいコマンドが登録されていなかった\n\n2. DIContainerの利用:\n - `DIContainer.resolve`または`DIContainer.get`を直接利用できなかった\n - グローバルな`DIContainer`インスタンスがなかった\n\n## 解決策\n\n以下のアプローチで解決しました:\n\n1. **E2Eテスト方針の変更**:\n - SDKクライアント経由ではなく、アプリケーションの公開APIに直接アクセスするテスト方法を採用\n - `app.getBranchController()`と`app.getGlobalController()`を使用して直接コントローラーメソッドを呼び出す\n\n2. **テストデータの検証方針**:\n - APIの戻り値の検証に加えて、ファイルシステム上に期待通りのファイルが作成されたかを確認\n - 実際のファイル内容を読み込み、期待する内容と一致するか検証\n\n3. **既存のテストファイルの取り扱い**:\n - 既存の`unified-document-commands.e2e.test.ts`は`.disabled`拡張子を追加して一時的に無効化\n - 新しいテストは`write_document.e2e.test.ts`にコントローラー直接呼び出し版を実装\n\nこのアプローチにより、DIコンテナのアクセス問題を回避し、かつ実際の機能を十分にテストできました。" }, { "title": "今後の改善点", "content": "## 中期的な改善策\n\n1. **routes.tsへの登録**:\n - 実運用のためには、`routes.ts`に`write_document`と`read_document`コマンドを登録する必要がある\n - AVAILABLE_TOOLSにも追加する必要がある\n\n2. **DIコンテナの改善**:\n - ツールからアクセスしやすいグローバルなDIコンテナインスタンスの提供を検討\n - または、初期化時にDIコンテナインスタンスをツールに渡す仕組みを作る\n\n3. **E2Eテストフレームワークの強化**:\n - MCPインメモリクライアントのテスト容易性の改善\n - テストヘルパーとしてDIコンテナを直接利用できる仕組みの追加\n\n## 短期的な対応\n\n1. **「直接API呼び出し」テスト戦略の文書化**:\n - このアプローチをプロジェクトのテスト戦略として文書化して共有\n - テストガイドを作成して「コマンドの直接テスト」と「SDKクライアント経由のテスト」の両方を説明\n\n2. **既存テストの修正**:\n - `unified-document-commands.e2e.test.ts`を復活させて直接APIアクセス方式に修正\n - もしくは、新しいテスト方式に一本化" }, { "title": "教訓", "content": "## 得られた教訓\n\n1. **依存関係の注入に関する教訓**:\n - グローバルシングルトンやモジュールレベルの依存は、テストを複雑にする可能性がある\n - コンポーネント間の依存関係は明示的に渡す設計が望ましい\n\n2. **E2Eテスト設計の教訓**:\n - 公開APIを直接利用するテストは信頼性が高く実装も比較的容易\n - SDKクライアント経由のテストはエンドユーザー視点での検証に有効だが、インフラ整備が必要\n - 機能テストと統合テストの境界を明確にすることが重要\n\n3. **バックエンドツールのテスト教訓**:\n - ツールとAPI間の一貫性を確保することが重要\n - ファイルシステムの実際の状態検証は、E2Eテストの信頼性を高める効果的な方法" } ] } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/t3ta/memory-bank-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server