Tests de plugins
Référence pour les utilitaires de test, les modèles et l’application des règles lint pour les plugins OpenClaw.Utilitaires de test
Import :openclaw/plugin-sdk/testing
Le sous-chemin de test exporte un ensemble restreint d’assistants pour les auteurs de plugins :
Exports disponibles
| Export | But |
|---|---|
installCommonResolveTargetErrorCases | Cas de test partagés pour la gestion des erreurs de résolution de cible |
shouldAckReaction | Vérifie si un canal doit ajouter une réaction d’ack |
removeAckReactionAfterReply | Supprime la réaction d’ack après la livraison de la réponse |
Types
Le sous-chemin de test réexporte également des types utiles dans les fichiers de test :Tester la résolution de cible
UtilisezinstallCommonResolveTargetErrorCases pour ajouter des cas d’erreur standard à la
résolution de cible d’un canal :
Modèles de test
Tester unitaire un plugin de canal
Tester unitaire un plugin de provider
Simuler le runtime du plugin
Pour le code qui utilisecreatePluginRuntimeStore, simulez le runtime dans les tests :
Tester avec des stubs par instance
Préférez les stubs par instance à la mutation de prototype :Tests de contrat (plugins dans le dépôt)
Les plugins intégrés ont des tests de contrat qui vérifient la propriété de l’enregistrement :- Quels plugins enregistrent quels providers
- Quels plugins enregistrent quels providers de parole
- La correction de la forme d’enregistrement
- La conformité du contrat d’exécution
Exécuter des tests ciblés
Pour un plugin spécifique :Application des règles lint (plugins dans le dépôt)
Trois règles sont appliquées parpnpm check pour les plugins dans le dépôt :
- Pas d’imports racine monolithiques — la racine
openclaw/plugin-sdkest rejetée - Pas d’imports directs
src/— les plugins ne peuvent pas importer directement../../src/ - Pas d’auto-imports — les plugins ne peuvent pas importer leur propre sous-chemin
plugin-sdk/<name>
Configuration des tests
OpenClaw utilise Vitest avec des seuils de couverture V8. Pour les tests de plugin :Liens associés
- SDK Overview — conventions d’import
- SDK Channel Plugins — interface des plugins de canal
- SDK Provider Plugins — hooks des plugins de provider
- Building Plugins — guide de démarrage