Skip to main content
Tài liệu tham khảo về các tiện ích kiểm thử, mẫu và cơ chế thực thi lint cho các plugin OpenClaw.
Đang tìm ví dụ kiểm thử? Các hướng dẫn thực hành có kèm ví dụ kiểm thử hoàn chỉnh: Kiểm thử plugin kênhKiểm thử plugin nhà cung cấp.

Tiện ích kiểm thử

Các đường dẫn con này là các điểm vào mã nguồn cục bộ trong repo dành cho kiểm thử các plugin đi kèm của chính OpenClaw. Chúng không phải là các export package.json được phát hành cho plugin bên thứ ba và có thể import Vitest hoặc các phần phụ thuộc kiểm thử khác chỉ có trong repo.
Hãy sử dụng các đường dẫn con chuyên biệt này để kiểm thử plugin đi kèm. Barrel openclaw/plugin-sdk/testing trước đây chỉ tồn tại cục bộ trong repo, bị loại khỏi các gói được phát hành và đã bị xóa. Bí danh openclaw/plugin-sdk/test-utils trước đây cũng bị xóa cùng với nó. pnpm run lint:plugins:no-extension-test-core-imports (scripts/check-no-extension-test-core-imports.ts) duy trì các kiểm thử tiện ích mở rộng trên các đường dẫn con kiểm thử chuyên biệt nêu trên.

Các export hiện có

Các bộ kiểm thử hợp đồng Plugin đi kèm cũng sử dụng các đường dẫn con kiểm thử SDK này cho các trình trợ giúp fixture chỉ dành cho kiểm thử về registry, manifest, artifact công khai và runtime. Các bộ kiểm thử chỉ dành cho lõi phụ thuộc vào danh mục OpenClaw đi kèm vẫn nằm trong src/plugins/contracts.

Kiểu

Các đường dẫn con kiểm thử chuyên biệt cũng tái xuất các kiểu hữu ích trong tệp kiểm thử:

Kiểm thử phân giải đích

Sử dụng installCommonResolveTargetErrorCases để thêm các trường hợp lỗi tiêu chuẩn cho việc phân giải đích của kênh:

Mẫu kiểm thử

Kiểm thử hợp đồng đăng ký

Các kiểm thử đơn vị truyền mock api viết thủ công vào register(api) không thực thi các cổng chấp nhận của trình tải OpenClaw. Hãy thêm ít nhất một kiểm thử khói dựa trên trình tải cho mỗi bề mặt đăng ký mà Plugin của bạn phụ thuộc vào, đặc biệt là các hook và khả năng độc quyền như bộ nhớ. Trình tải thực tế sẽ làm đăng ký Plugin thất bại khi thiếu siêu dữ liệu bắt buộc hoặc Plugin gọi API khả năng mà nó không sở hữu. Ví dụ: api.registerHook(...) yêu cầu tên hook, và api.registerMemoryCapability(...) yêu cầu manifest Plugin hoặc mục nhập được xuất phải khai báo kind: "memory".

Kiểm thử truy cập cấu hình runtime

Ưu tiên mock runtime Plugin dùng chung từ openclaw/plugin-sdk/plugin-test-runtime. Các trình trợ giúp cấu hình runtime của nó mô hình hóa API snapshot và API thay đổi hiện tại.

Kiểm thử đơn vị Plugin kênh

Kiểm thử đơn vị Plugin nhà cung cấp

Giả lập runtime Plugin

Đối với mã sử dụng createPluginRuntimeStore, hãy giả lập runtime trong các kiểm thử:

Kiểm thử bằng stub theo từng thực thể

Ưu tiên stub theo từng thực thể thay vì thay đổi prototype:

Kiểm thử hợp đồng (Plugin trong kho mã)

Các Plugin đi kèm có kiểm thử hợp đồng xác minh quyền sở hữu đăng ký:
Các kiểm thử này xác nhận:
  • Plugin nào đăng ký những nhà cung cấp nào
  • Plugin nào đăng ký những nhà cung cấp giọng nói nào
  • Tính đúng đắn của cấu trúc đăng ký
  • Mức độ tuân thủ hợp đồng runtime

Chạy kiểm thử theo phạm vi

Đối với một Plugin cụ thể:
Chỉ đối với kiểm thử hợp đồng:

Thực thi lint (Plugin trong kho mã)

scripts/run-additional-boundary-checks.mjs chạy một tập hợp các bước kiểm tra ranh giới import lint:plugins:* trong CI; mỗi bước cũng có thể được chạy độc lập trên máy cục bộ: Các Plugin bên ngoài không chịu sự điều chỉnh của các quy tắc lint này, nhưng nên tuân theo cùng các mẫu.

Cấu hình kiểm thử

OpenClaw sử dụng Vitest 4 với báo cáo độ bao phủ V8 mang tính thông tin. Đối với kiểm thử Plugin:
Nếu việc chạy cục bộ gây áp lực bộ nhớ:

Liên quan