Skip to main content
OpenClaw Pluginのテストユーティリティ、パターン、lint 適用に関するリファレンスです。
テスト例をお探しですか? ハウツーガイドには実践的なテスト例があります: チャンネル Pluginのテストプロバイダー Pluginのテスト

テストユーティリティ

これらのサブパスは、OpenClaw 独自のバンドル済み Pluginテスト向けのリポジトリローカルなソースエントリポイントです。サードパーティ Plugin向けの公開 package.json エクスポートではなく、 Vitest やその他のリポジトリ専用テスト依存関係をインポートする場合があります。
バンドル済み Pluginのテストには、これらの用途別サブパスを使用してください。以前の openclaw/plugin-sdk/testing バレルはリポジトリローカルであり、リリース済み パッケージから除外されていたため、削除されました。以前の openclaw/plugin-sdk/test-utils エイリアスも同時に削除されました。pnpm run lint:plugins:no-extension-test-core-importsscripts/check-no-extension-test-core-imports.ts)により、拡張機能のテストでは 上記の用途別テストサブパスが引き続き使用されます。

利用可能なエクスポート

バンドル Plugin のコントラクトスイートでも、テスト専用のレジストリ、マニフェスト、公開アーティファクト、およびランタイムフィクスチャのヘルパーとして、これらの SDK テスト用サブパスを使用します。 バンドルされた OpenClaw インベントリに依存するコア専用スイートは、代わりに src/plugins/contracts 配下に置きます。

目的別のテスト用サブパスでは、テストファイルで役立つ型も再エクスポートされます。

テスト対象の解決

チャネルの対象解決に標準のエラーケースを追加するには、 installCommonResolveTargetErrorCases を使用します。

テストパターン

登録コントラクトのテスト

手書きの api モックを register(api) に渡す単体テストでは、 OpenClaw のローダー受け入れゲートは検証されません。Plugin が依存する各登録サーフェスについて、ローダーを介したスモークテストを少なくとも 1 つ追加してください。特に、フックやメモリのような排他的機能では重要です。 必要なメタデータがない場合や、Plugin が所有していない機能 API を呼び出した場合、実際のローダーでは Plugin の登録に失敗します。たとえば、 api.registerHook(...) にはフック名が必要であり、 api.registerMemoryCapability(...) では Plugin のマニフェストまたはエクスポートされた エントリで kind: "memory" を宣言する必要があります。

ランタイム設定アクセスのテスト

openclaw/plugin-sdk/plugin-test-runtime の共有 Plugin ランタイムモックを優先してください。 そのランタイム設定ヘルパーは、現在のスナップショット API と変更 API をモデル化しています。

チャネル Plugin の単体テスト

プロバイダー Plugin の単体テスト

Plugin ランタイムのモック

createPluginRuntimeStore を使用するコードでは、テスト内でランタイムをモックします。

インスタンス単位のスタブを使用したテスト

プロトタイプの変更よりも、インスタンス単位のスタブを優先してください。

コントラクトテスト(リポジトリ内 Plugin)

バンドル Plugin には、登録の所有権を検証するコントラクトテストがあります。
これらのテストでは以下を検証します。
  • どの Plugin がどのプロバイダーを登録するか
  • どの Plugin がどの音声プロバイダーを登録するか
  • 登録形式の正しさ
  • ランタイムコントラクトへの準拠

スコープを限定したテストの実行

特定の Plugin の場合:
コントラクトテストのみの場合:

lint の適用(リポジトリ内 Plugin)

scripts/run-additional-boundary-checks.mjs は CI で一連の lint:plugins:* インポート境界チェックを実行します。それぞれローカルで個別に実行することもできます。 外部 Plugin はこれらの lint ルールの対象ではありませんが、同じパターンに従うことを推奨します。

テスト設定

OpenClaw は、参考情報として V8 カバレッジをレポートする Vitest 4 を使用します。Plugin のテストでは以下を実行します。
ローカル実行でメモリ不足が発生する場合:

関連項目