Skip to main content
OpenClaw Plugin의 테스트 유틸리티, 패턴 및 린트 적용에 대한 참고 자료입니다.
테스트 예시를 찾고 계십니까? 사용 방법 가이드에는 완성된 테스트 예시가 포함되어 있습니다. 채널 Plugin 테스트공급자 Plugin 테스트.

테스트 유틸리티

이 하위 경로들은 OpenClaw 자체 번들 Plugin 테스트를 위한 저장소 로컬 소스 진입점입니다. 타사 Plugin에 게시되는 package.json 내보내기가 아니며, Vitest 또는 기타 저장소 전용 테스트 종속성을 가져올 수 있습니다.
번들 Plugin 테스트에는 이러한 목적별 하위 경로를 사용하십시오. 이전 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)은 해당 별칭을 새 확장 테스트에서 가져오는 것을 거부합니다.

사용 가능한 내보내기

번들 Plugin 계약 스위트는 테스트 전용 레지스트리, 매니페스트, 공개 아티팩트 및 런타임 픽스처 도우미를 위해 이러한 SDK 테스트 하위 경로도 사용합니다. 번들 OpenClaw 인벤토리에 의존하는 코어 전용 스위트는 대신 src/plugins/contracts 아래에 유지됩니다.

타입

집중 테스트 하위 경로에서도 테스트 파일에 유용한 타입을 다시 내보냅니다.

테스트 대상 확인

채널 대상 확인에 표준 오류 사례를 추가하려면 installCommonResolveTargetErrorCases을 사용하십시오.

테스트 패턴

등록 계약 테스트

직접 작성한 api 모의를 register(api)에 전달하는 단위 테스트는 OpenClaw의 로더 승인 게이트를 실행하지 않습니다. Plugin이 의존하는 각 등록 표면마다 로더 기반 스모크 테스트를 하나 이상 추가하십시오. 특히 훅과 메모리 같은 독점 기능에 반드시 추가해야 합니다. 필수 메타데이터가 없거나 Plugin이 소유하지 않은 기능 API를 호출하면 실제 로더는 Plugin 등록에 실패합니다. 예를 들어 api.registerHook(...)에는 훅 이름이 필요하며, api.registerMemoryCapability(...)에는 Plugin 매니페스트 또는 내보낸 엔트리가 kind: "memory"을 선언해야 합니다.

런타임 구성 접근 테스트

openclaw/plugin-sdk/plugin-test-runtime의 공유 Plugin 런타임 모의를 사용하는 것이 좋습니다. 이 모의의 runtime.config.loadConfig()runtime.config.writeConfigFile(...)은 기본적으로 예외를 발생시키므로 테스트에서 사용 중단된 호환성 API의 새로운 사용을 감지할 수 있습니다. 테스트가 레거시 호환성 동작을 명시적으로 다루는 경우에만 이 모의를 재정의하십시오.

채널 Plugin 단위 테스트

제공자 Plugin 단위 테스트

Plugin 런타임 모의

createPluginRuntimeStore을 사용하는 코드의 경우 테스트에서 런타임을 모의하십시오.

인스턴스별 스텁을 사용한 테스트

프로토타입 변경보다 인스턴스별 스텁을 사용하는 것이 좋습니다.

계약 테스트(저장소 내 Plugin)

번들 Plugin에는 등록 소유권을 검증하는 계약 테스트가 있습니다.
이 테스트에서는 다음을 검증합니다.
  • 어떤 Plugin이 어떤 제공자를 등록하는지
  • 어떤 Plugin이 어떤 음성 제공자를 등록하는지
  • 등록 형태의 정확성
  • 런타임 계약 준수

범위 지정 테스트 실행

특정 Plugin의 경우:
계약 테스트만 실행하는 경우:

린트 적용(저장소 내 Plugin)

scripts/run-additional-boundary-checks.mjs은 CI에서 일련의 lint:plugins:* 가져오기 경계 검사를 실행하며, 각 검사는 로컬에서도 독립적으로 실행할 수 있습니다. 외부 Plugin에는 이러한 린트 규칙이 적용되지 않지만, 동일한 패턴을 따르는 것이 좋습니다.

테스트 구성

OpenClaw는 정보 제공용 V8 커버리지 보고와 함께 Vitest 4를 사용합니다. Plugin 테스트의 경우:
로컬 실행으로 메모리 압박이 발생하는 경우:

관련 문서