Skip to main content
Довідка про тестові утиліти, шаблони та контроль за допомогою лінтера для плагінів OpenClaw.
Шукаєте приклади тестів? Практичні посібники містять докладні приклади тестів: Тести плагінів каналів і Тести плагінів провайдерів.

Тестові утиліти

Ці підшляхи є локальними точками входу до вихідного коду репозиторію для тестів власних вбудованих плагінів OpenClaw. Вони не є опублікованими експортами package.json для сторонніх плагінів і можуть імпортувати Vitest або інші тестові залежності, доступні лише в репозиторії.
Використовуйте ці спеціалізовані підшляхи для тестів вбудованих плагінів. Колишній модуль реекспорту openclaw/plugin-sdk/testing був локальним для репозиторію, не входив до пакетів, що постачаються, і був видалений. Застарілий псевдонім openclaw/plugin-sdk/test-utils залишається локальним для репозиторію; pnpm run lint:plugins:no-extension-test-core-imports (scripts/check-no-extension-test-core-imports.ts) відхиляє нові імпорти цього псевдоніма в тестах розширень.

Доступні експорти

Набори тестів контрактів вбудованих плагінів також використовують ці тестові підшляхи SDK для допоміжних засобів реєстру, маніфесту, публічних артефактів і фікстур середовища виконання, призначених лише для тестів. Набори тестів виключно для ядра, які залежать від складу вбудованих компонентів OpenClaw, натомість залишаються в src/plugins/contracts.

Типи

Підшляхи для цільового тестування також повторно експортують типи, корисні у файлах тестів:

Тестування визначення цілі

Використовуйте installCommonResolveTargetErrorCases, щоб додати стандартні випадки помилок для визначення цілі каналу:

Шаблони тестування

Тестування контрактів реєстрації

Модульні тести, які передають написану вручну імітацію api до register(api), не перевіряють умови прийняття завантажувача OpenClaw. Додайте принаймні один димовий тест із використанням завантажувача для кожної поверхні реєстрації, від якої залежить ваш плагін, особливо хуків і ексклюзивних можливостей, як-от пам’ять. Справжній завантажувач завершує реєстрацію плагіна помилкою, якщо немає обов’язкових метаданих або плагін викликає API можливості, якою він не володіє. Наприклад, api.registerHook(...) вимагає назви хука, а api.registerMemoryCapability(...) вимагає, щоб маніфест плагіна або експортована точка входу оголошували kind: "memory".

Тестування доступу до конфігурації середовища виконання

Віддавайте перевагу спільній імітації середовища виконання плагіна з openclaw/plugin-sdk/plugin-test-runtime. Її імітації runtime.config.loadConfig() та runtime.config.writeConfigFile(...) типово породжують виняток, щоб тести виявляли нове використання застарілих API сумісності. Перевизначайте ці імітації лише тоді, коли тест явно охоплює застарілу поведінку сумісності.

Модульне тестування плагіна каналу

Модульне тестування плагіна постачальника

Імітація середовища виконання плагіна

Для коду, який використовує createPluginRuntimeStore, імітуйте середовище виконання в тестах:

Тестування із заглушками для окремих екземплярів

Віддавайте перевагу заглушкам для окремих екземплярів замість зміни прототипу:

Контрактні тести (плагіни в репозиторії)

Вбудовані плагіни мають контрактні тести, які перевіряють володіння реєстрацією:
Ці тести перевіряють:
  • Які плагіни реєструють яких постачальників
  • Які плагіни реєструють яких постачальників мовлення
  • Правильність форми реєстрації
  • Відповідність контракту середовища виконання

Запуск тестів для визначеної області

Для конкретного плагіна:
Лише для контрактних тестів:

Перевірка лінтером (плагіни в репозиторії)

scripts/run-additional-boundary-checks.mjs запускає набір перевірок меж імпорту lint:plugins:* у CI; кожну з них також можна запускати локально окремо: Зовнішні плагіни не підпадають під дію цих правил лінтера, але рекомендовано дотримуватися тих самих шаблонів.

Конфігурація тестів

OpenClaw використовує Vitest 4 з інформаційним звітуванням про покриття V8. Для тестів плагінів:
Якщо локальні запуски спричиняють надмірне використання пам’яті:

Пов’язані матеріали