Тестування plugin
Довідник з утиліт тестування, шаблонів і контролю lint для plugin OpenClaw.Утиліти тестування
Імпорт:openclaw/plugin-sdk/testing
Subpath для тестування експортує вузький набір helper для авторів plugin:
Доступні експорти
| Export | Призначення |
|---|---|
installCommonResolveTargetErrorCases | Спільні тестові випадки для обробки помилок визначення цілей |
shouldAckReaction | Перевіряє, чи має канал додавати ack-реакцію |
removeAckReactionAfterReply | Видаляє ack-реакцію після доставки відповіді |
Типи
Subpath для тестування також повторно експортує типи, корисні у тестових файлах:Тестування визначення цілей
ВикористовуйтеinstallCommonResolveTargetErrorCases, щоб додати стандартні випадки помилок для
визначення цілей каналу:
Шаблони тестування
Модульне тестування plugin каналу
Модульне тестування plugin провайдера
Мокання runtime plugin
Для коду, який використовуєcreatePluginRuntimeStore, мокуйте runtime у тестах:
Тестування з per-instance stub
Надавайте перевагу per-instance stub замість мутації prototype:Контрактні тести (plugin у репозиторії)
Bundled plugin мають контрактні тести, які перевіряють належність реєстрації:- Які plugin реєструють які провайдери
- Які plugin реєструють які мовленнєві провайдери
- Коректність форми реєстрації
- Відповідність runtime-контракту
Запуск scoped-тестів
Для конкретного plugin:Контроль lint (plugin у репозиторії)
pnpm check застосовує три правила для plugin у репозиторії:
- Без монолітних імпортів із root — root barrel
openclaw/plugin-sdkзаборонено - Без прямих імпортів
src/— plugin не можуть напряму імпортувати../../src/ - Без self-import — plugin не можуть імпортувати власний subpath
plugin-sdk/<name>
Конфігурація тестів
OpenClaw використовує Vitest із порогами покриття V8. Для тестів plugin:Пов’язане
- SDK Overview — правила import
- SDK Channel Plugins — інтерфейс plugin каналу
- SDK Provider Plugins — hooks plugin провайдера
- Building Plugins — посібник для початку роботи