Skip to main content
Referencia de utilidades, patrones y aplicación de reglas de lint para los plugins de OpenClaw.
¿Busca ejemplos de pruebas? Las guías prácticas incluyen ejemplos de pruebas desarrollados: Pruebas de plugins de canal y Pruebas de plugins de proveedor.

Utilidades de prueba

Estas subrutas son puntos de entrada de código fuente locales del repositorio para las pruebas de los plugins incluidos de OpenClaw. No son exportaciones package.json publicadas para plugins de terceros y pueden importar Vitest u otras dependencias de prueba exclusivas del repositorio.
Utilice estas subrutas específicas para las pruebas de plugins incluidos. El antiguo barrel openclaw/plugin-sdk/testing era local del repositorio, estaba excluido de los paquetes distribuidos y se ha eliminado. El antiguo alias openclaw/plugin-sdk/test-utils se eliminó junto con él. pnpm run lint:plugins:no-extension-test-core-imports (scripts/check-no-extension-test-core-imports.ts) mantiene las pruebas de extensiones en las subrutas de prueba específicas anteriores.

Exportaciones disponibles

Las suites de contratos de plugins incluidos también usan estas subrutas de pruebas del SDK para los auxiliares de registro, manifiesto, artefactos públicos y fixtures de runtime exclusivos de pruebas. Las suites exclusivas del núcleo que dependen del inventario incluido de OpenClaw permanecen en src/plugins/contracts.

Tipos

Las subrutas de pruebas específicas también reexportan tipos útiles en los archivos de pruebas:

Pruebas de resolución de destinos

Use installCommonResolveTargetErrorCases para añadir casos de error estándar para la resolución de destinos de canales:

Patrones de pruebas

Pruebas de contratos de registro

Las pruebas unitarias que pasan un mock de api escrito manualmente a register(api) no ejercitan las puertas de aceptación del cargador de OpenClaw. Añada al menos una prueba de humo respaldada por el cargador para cada superficie de registro de la que dependa el plugin, especialmente los hooks y las capacidades exclusivas, como la memoria. El cargador real rechaza el registro del plugin cuando faltan metadatos obligatorios o un plugin llama a una API de capacidad que no le pertenece. Por ejemplo, api.registerHook(...) requiere un nombre de hook, y api.registerMemoryCapability(...) requiere que el manifiesto del plugin o la entrada exportada declare kind: "memory".

Pruebas de acceso a la configuración del runtime

Es preferible usar el mock compartido del runtime del plugin de openclaw/plugin-sdk/plugin-test-runtime. Sus auxiliares de configuración del runtime modelan las API actuales de instantáneas y mutación.

Pruebas unitarias de un plugin de canal

Pruebas unitarias de un plugin de proveedor

Simulación del runtime del plugin

Para el código que usa createPluginRuntimeStore, simule el runtime en las pruebas:

Pruebas con stubs por instancia

Es preferible usar stubs por instancia en lugar de modificar el prototipo:

Pruebas de contratos (plugins del repositorio)

Los plugins incluidos tienen pruebas de contratos que verifican la propiedad del registro:
Estas pruebas verifican:
  • Qué plugins registran qué proveedores
  • Qué plugins registran qué proveedores de voz
  • Corrección de la estructura de registro
  • Cumplimiento del contrato del runtime

Ejecución de pruebas específicas

Para un plugin específico:
Solo para las pruebas de contratos:

Aplicación del lint (plugins del repositorio)

scripts/run-additional-boundary-checks.mjs ejecuta un conjunto de comprobaciones de límites de importación de lint:plugins:* en la CI; cada una también puede ejecutarse localmente de forma independiente: Los plugins externos no están sujetos a estas reglas de lint, pero se recomienda seguir los mismos patrones.

Configuración de las pruebas

OpenClaw usa Vitest 4 con informes informativos de cobertura V8. Para las pruebas de plugins:
Si las ejecuciones locales causan presión de memoria:

Contenido relacionado