Pruebas de plugins
Referencia de utilidades de prueba, patrones y aplicación de lint para plugins de OpenClaw.Utilidades de prueba
Importar:openclaw/plugin-sdk/testing
La subruta de pruebas exporta un conjunto reducido de helpers para autores de plugins:
Exportaciones disponibles
| Exportación | Propósito |
|---|---|
installCommonResolveTargetErrorCases | Casos de prueba compartidos para manejo de errores de resolución de destino |
shouldAckReaction | Comprueba si un canal debe añadir una reacción de confirmación |
removeAckReactionAfterReply | Elimina la reacción de confirmación después de entregar la respuesta |
Tipos
La subruta de pruebas también vuelve a exportar tipos útiles en archivos de prueba:Pruebas de resolución de destino
UsainstallCommonResolveTargetErrorCases para añadir casos de error estándar para
la resolución de destino de canales:
Patrones de prueba
Pruebas unitarias de un plugin de canal
Pruebas unitarias de un plugin de proveedor
Mock del runtime del plugin
Para código que usacreatePluginRuntimeStore, haz mock del runtime en las pruebas:
Pruebas con stubs por instancia
Prefiere stubs por instancia en lugar de mutar prototypes:Pruebas de contrato (plugins dentro del repositorio)
Los plugins empaquetados tienen pruebas de contrato que verifican la propiedad del registro:- Qué plugins registran qué proveedores
- Qué plugins registran qué proveedores de voz
- La corrección de la forma del registro
- El cumplimiento del contrato de runtime
Ejecutar pruebas acotadas
Para un plugin específico:Aplicación de lint (plugins dentro del repositorio)
pnpm check aplica tres reglas para plugins dentro del repositorio:
- Sin importaciones monolíticas de la raíz — se rechaza el barrel raíz
openclaw/plugin-sdk - Sin importaciones directas de
src/— los plugins no pueden importar../../src/directamente - Sin autoimportaciones — los plugins no pueden importar su propia subruta
plugin-sdk/<name>
Configuración de pruebas
OpenClaw usa Vitest con umbrales de cobertura V8. Para pruebas de plugins:Relacionado
- Resumen del SDK — convenciones de importación
- SDK de plugins de canal — interfaz de plugins de canal
- SDK de plugins de proveedor — hooks de plugins de proveedor
- Crear plugins — guía de introducción