Pengujian Plugin
Referensi untuk utilitas pengujian, pola, dan penegakan lint untuk plugin OpenClaw.Utilitas pengujian
Impor:openclaw/plugin-sdk/testing
Subpath pengujian mengekspor sekumpulan helper yang ringkas untuk penulis plugin:
Ekspor yang tersedia
| Ekspor | Tujuan |
|---|---|
installCommonResolveTargetErrorCases | Kasus pengujian bersama untuk penanganan kesalahan resolusi target |
shouldAckReaction | Memeriksa apakah sebuah channel harus menambahkan reaksi ack |
removeAckReactionAfterReply | Menghapus reaksi ack setelah balasan dikirimkan |
Tipe
Subpath pengujian juga mengekspor ulang tipe yang berguna dalam file pengujian:Menguji resolusi target
GunakaninstallCommonResolveTargetErrorCases untuk menambahkan kasus kesalahan standar untuk
resolusi target channel:
Pola pengujian
Pengujian unit untuk plugin channel
Pengujian unit untuk plugin provider
Memock runtime plugin
Untuk kode yang menggunakancreatePluginRuntimeStore, mock runtime dalam pengujian:
Pengujian dengan stub per instance
Utamakan stub per instance dibanding mutasi prototype:Pengujian kontrak (plugin dalam repo)
Plugin bawaan memiliki pengujian kontrak yang memverifikasi kepemilikan pendaftaran:- Plugin mana yang mendaftarkan provider tertentu
- Plugin mana yang mendaftarkan provider speech tertentu
- Kebenaran bentuk pendaftaran
- Kepatuhan kontrak runtime
Menjalankan pengujian terbatas
Untuk plugin tertentu:Penegakan lint (plugin dalam repo)
Tiga aturan ditegakkan olehpnpm check untuk plugin dalam repo:
- Tidak ada impor root yang monolitik — root barrel
openclaw/plugin-sdkditolak - Tidak ada impor
src/langsung — plugin tidak dapat mengimpor../../src/secara langsung - Tidak ada self-import — plugin tidak dapat mengimpor subpath
plugin-sdk/<name>miliknya sendiri
Konfigurasi pengujian
OpenClaw menggunakan Vitest dengan ambang cakupan V8. Untuk pengujian plugin:Terkait
- Ikhtisar SDK — konvensi impor
- Plugin Channel SDK — antarmuka plugin channel
- Plugin Provider SDK — hook plugin provider
- Membangun Plugin — panduan memulai