Skip to main content
Naslaginformatie voor testhulpprogramma’s, patronen en lint-handhaving voor OpenClaw- plugins.
Op zoek naar testvoorbeelden? De instructiegidsen bevatten uitgewerkte testvoorbeelden: Tests voor kanaalplugins en Tests voor providerplugins.

Testhulpprogramma’s

Deze subpaden zijn lokale broningangen van de repository voor de eigen gebundelde plugintests van OpenClaw. Het zijn geen gepubliceerde package.json-exports voor plugins van derden en ze kunnen Vitest of andere testafhankelijkheden importeren die alleen in de repository beschikbaar zijn.
Gebruik deze gerichte subpaden voor tests van gebundelde plugins. De voormalige openclaw/plugin-sdk/testing-barrel was lokaal in de repository, uitgesloten van uitgebrachte pakketten en is verwijderd. De voormalige openclaw/plugin-sdk/test-utils- alias is tegelijk verwijderd. pnpm run lint:plugins:no-extension-test-core-imports (scripts/check-no-extension-test-core-imports.ts) houdt extensietests op de bovenstaande gerichte testsubpaden.

Beschikbare exports

Gebundelde Plugin-contractsuites gebruiken deze SDK-testsubpaden ook voor testhelpers voor alleen-tests-registers, manifesten, openbare artefacten en runtime-fixtures. Suites die uitsluitend voor core zijn en afhankelijk zijn van de gebundelde OpenClaw-inventaris, blijven in plaats daarvan onder src/plugins/contracts.

Typen

Gerichte testsubpaden exporteren ook typen opnieuw die nuttig zijn in testbestanden:

Oplossing van testdoelen

Gebruik installCommonResolveTargetErrorCases om standaardfoutgevallen toe te voegen voor het oplossen van kanaaldoelen:

Testpatronen

Registratiecontracten testen

Unittests die een handgeschreven mock van api doorgeven aan register(api), oefenen de acceptatiecontroles van de OpenClaw-loader niet uit. Voeg ten minste één door de loader ondersteunde rooktest toe voor elk registratieoppervlak waarvan je Plugin afhankelijk is, met name hooks en exclusieve mogelijkheden zoals geheugen. De echte loader laat de Plugin-registratie mislukken wanneer vereiste metadata ontbreekt of een Plugin een capability-API aanroept waarvan deze niet de eigenaar is. Bijvoorbeeld: api.registerHook(...) vereist een hooknaam en api.registerMemoryCapability(...) vereist dat het Plugin-manifest of de geëxporteerde entry kind: "memory" declareert.

Toegang tot runtimeconfiguratie testen

Geef de voorkeur aan de gedeelde mock voor de Plugin-runtime uit openclaw/plugin-sdk/plugin-test-runtime. De helpers voor runtimeconfiguratie modelleren de huidige snapshot- en mutatie-API’s.

Een kanaal-Plugin met unittests testen

Een provider-Plugin met unittests testen

De Plugin-runtime mocken

Voor code die createPluginRuntimeStore gebruikt, mock je de runtime in tests:

Testen met stubs per instantie

Geef de voorkeur aan stubs per instantie boven prototypemutatie:

Contracttests (Plugins in de repository)

Gebundelde Plugins hebben contracttests die het eigenaarschap van registraties verifiëren:
Deze tests controleren:
  • Welke Plugins welke providers registreren
  • Welke Plugins welke spraakproviders registreren
  • Correctheid van de registratievorm
  • Naleving van het runtimecontract

Afgebakende tests uitvoeren

Voor een specifieke Plugin:
Alleen voor contracttests:

Lint-handhaving (Plugins in de repository)

scripts/run-additional-boundary-checks.mjs voert in CI een reeks lint:plugins:* controles op importgrenzen uit; elke controle kan ook zelfstandig lokaal worden uitgevoerd: Externe Plugins vallen niet onder deze lintregels, maar het volgen van dezelfde patronen wordt aanbevolen.

Testconfiguratie

OpenClaw gebruikt Vitest 4 met informatieve V8-dekkingsrapportage. Voor Plugin-tests:
Als lokale uitvoeringen geheugendruk veroorzaken:

Gerelateerd