🦔

GraphAI のユニットテスト

2024/12/24に公開

はじめに

GraphAI で ユニットテストを行うには2つの方法があります。
1つは、リポジトリ全体のテストを行う方法で、もう1つは、単一のパッケージやプロジェクトのテストを行う方法です。

モノレポのテスト

GraphAIはモノレポを採用しています。
モノレポ(Monorepo)とは、複数のプロジェクトやパッケージを単一のリポジトリで管理する手法です。
複数のプロジェクトを一度にテストできるため、統合テストが容易になります。これにより、変更が他のプロジェクトに与える影響を迅速に検出できます。
モノレポを管理するためのツールとして、Yarn Workspaces を使用しています。
Yarn Workspacesは、Yarnパッケージマネージャーの機能で、モノレポをサポートします。
package.jsonファイルのスクリプトセクションには、yarn workspacesを使用してモノレポ内の各パッケージでコマンドを実行する設定が含まれています。

  "scripts": {
    "test": "yarn workspaces run test",
    "build": "yarn workspaces run build",
    "eslint": "yarn workspaces run eslint",
    "format": "yarn workspaces run format",
    "doc": "yarn workspaces run doc",
    ...
  },

  ...

  "workspaces": [
    "packages/*",
    "agents/*",
    "llm_agents/*"
  ],

これにより、モノレポ内のすべてのパッケージで一貫したビルド、テスト、フォーマット、ドキュメント生成などが実行されます。
レポジトリ全体のテストを実行するには、以下のコマンドを実行します。

yarn test

これにより、モノレポ内のすべてのパッケージでテストが実行されます。

パッケージのテスト

パッケージ毎のテストを行うには、各パッケージのディレクトリ(package.jsonファイルがある場所)に移動して、テストコマンドを実行します。

cd packages/agent_filters 
yarn test

これにより、指定されたパッケージのテストが実行されます。

現在のディレクトリ構成

まだ、構成が変わるかもしれませんが、現在のディレクトリ構成は以下のようになっています。

./graphai
  ./agents
  ./config
  ./docs
  ./llm_agents
  ./packages
  ./src

テストが実行されるパッケージ(package.json)は以下の通りです。テストをß実行すると、「>」の後ろに各パッケージのスコープと名前が表示されます。

./packages/agent_filters/package.json
> @graphai/agent_filters

./packages/agentdoc/package.json
> @receptron/agentdoc

./packages/agents/package.json
> @graphai/agents

./packages/cli/package.json
> @receptron/graphai_cli

./packages/graphai/package.json
> graphai

./packages/lite/package.json
> @receptron/graphai_lite

./packages/samples/package.json
> @graphai/samples

./packages/test_utils/package.json
> @receptron/test_utils

./agents/agent_utils/package.json
> @graphai/agent_utils

./agents/data_agents/package.json
> @graphai/data_agents

./agents/input_agents/package.json
> @graphai/input_agents

./agents/llm_agents/package.json
> @graphai/llm_agents

./agents/service_agents/package.json
> @graphai/service_agents

./agents/sleeper_agents/package.json
> @graphai/sleeper_agents

./agents/vanilla_agents/package.json
> @graphai/vanilla

./agents/vanilla_node_agents/package.json
> @graphai/vanilla_node_agents

./llm_agents/anthropic_agent/package.json
> @graphai/anthropic_agent

./llm_agents/gemini_agent/package.json
> @graphai/gemini_agent

./llm_agents/groq_agent/package.json
> @graphai/groq_agent

./llm_agents/llm_utils/package.json
> @graphai/llm_utils

./llm_agents/openai_agent/package.json
> @graphai/openai_agent

./llm_agents/openai_fetch_agent/package.json
> @graphai/replicate_agent

./llm_agents/replicate_agent/package.json
> @graphai/replicate_agent

./llm_agents/slashgpt_agent/package.json
> @graphai/slashgpt_agent

まとめ

GraphAI のテスト方法について説明しました。テストの実行だけではなく、テストの内容を確認することで、各パッケージの機能や仕様を把握することができ、参考になります。
また、テストを追加、変更するなどしてGraphAI自体の品質を上げるなどの貢献もできます。
是非、GraphAI の開発に参加してみてください。

シンギュラリティ・ソサエティ

Discussion