Skip to main content
مرجع لأدوات الاختبار وأنماطه وإنفاذ قواعد التدقيق في Plugins الخاصة بـ OpenClaw.
هل تبحث عن أمثلة للاختبارات؟ تتضمن الأدلة الإرشادية أمثلة اختبار تطبيقية: اختبارات Plugin القناة و اختبارات Plugin المزوّد.

أدوات الاختبار

هذه المسارات الفرعية هي نقاط دخول مصدرية محلية للمستودع لاختبارات Plugins المدمجة الخاصة بـ OpenClaw. وهي ليست صادرات package.json منشورة للـ Plugins التابعة لجهات خارجية، وقد تستورد Vitest أو تبعيات اختبار أخرى خاصة بالمستودع فقط.
استخدم هذه المسارات الفرعية المركّزة لاختبارات Plugins المدمجة. كان ملف التصدير 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) عمليات الاستيراد الجديدة لاختبارات الإضافات من ذلك الاسم البديل.

الصادرات المتاحة

تستخدم مجموعات عقود Plugins المضمّنة أيضًا مسارات الاختبار الفرعية هذه في SDK لأدوات السجل وبيان التعريف والعناصر العامة ومُثبّتات وقت التشغيل المخصصة للاختبار فقط. أما المجموعات الخاصة بالنواة فقط والتي تعتمد على مخزون OpenClaw المضمّن فتبقى ضمن src/plugins/contracts بدلًا من ذلك.

الأنواع

تعيد مسارات الاختبار الفرعية المركّزة أيضًا تصدير الأنواع المفيدة في ملفات الاختبار:

اختبار تحليل الوجهة

استخدم installCommonResolveTargetErrorCases لإضافة حالات الخطأ القياسية لتحليل وجهة القناة:

أنماط الاختبار

اختبار عقود التسجيل

اختبارات الوحدات التي تمرّر محاكاة api مكتوبة يدويًا إلى register(api) لا تختبر بوابات قبول المُحمِّل في OpenClaw. أضف اختبار تحقق أوليًا واحدًا على الأقل مدعومًا بالمُحمِّل لكل سطح تسجيل يعتمد عليه Plugin الخاص بك، وخصوصًا الخطافات والإمكانات الحصرية مثل الذاكرة. يفشل المُحمِّل الفعلي في تسجيل Plugin عندما تكون البيانات الوصفية المطلوبة مفقودة أو يستدعي Plugin واجهة API لإمكان لا يملكه. على سبيل المثال، يتطلب api.registerHook(...) اسم خطاف، ويتطلب api.registerMemoryCapability(...) أن يصرّح بيان Plugin أو مدخل التصدير بـ kind: "memory".

اختبار الوصول إلى إعدادات وقت التشغيل

فضّل محاكاة وقت تشغيل Plugin المشتركة من openclaw/plugin-sdk/plugin-test-runtime. تطرح محاكاتا runtime.config.loadConfig() وruntime.config.writeConfigFile(...) أخطاء افتراضيًا كي تكتشف الاختبارات الاستخدام الجديد لواجهات API المتقادمة الخاصة بالتوافق. لا تتجاوز هذه المحاكيات إلا عندما يغطي الاختبار صراحةً سلوك التوافق القديم.

اختبار وحدات Plugin قناة

اختبار وحدات Plugin موفّر

محاكاة وقت تشغيل Plugin

بالنسبة إلى الشيفرة التي تستخدم createPluginRuntimeStore، حاكِ وقت التشغيل في الاختبارات:

الاختبار باستخدام بدائل لكل مثيل

فضّل البدائل الخاصة بكل مثيل على تعديل النموذج الأولي:

اختبارات العقود (Plugins داخل المستودع)

تتضمن Plugins المضمّنة اختبارات عقود تتحقق من ملكية التسجيل:
تتحقق هذه الاختبارات مما يلي:
  • أي Plugins تسجّل أي موفّرين
  • أي Plugins تسجّل أي موفّري نطق
  • صحة بنية التسجيل
  • الامتثال لعقد وقت التشغيل

تشغيل اختبارات محددة النطاق

لـ Plugin معيّن:
لاختبارات العقود فقط:

فرض قواعد التدقيق (Plugins داخل المستودع)

يشغّل scripts/run-additional-boundary-checks.mjs مجموعة من فحوصات lint:plugins:* لحدود الاستيراد في CI؛ ويمكن أيضًا تشغيل كل منها بصورة مستقلة محليًا: لا تخضع Plugins الخارجية لقواعد التدقيق هذه، ولكن يُوصى باتباع الأنماط نفسها.

إعدادات الاختبار

يستخدم OpenClaw الإصدار Vitest 4 مع تقارير معلوماتية عن تغطية V8. لاختبارات Plugin:
إذا سببت عمليات التشغيل المحلية ضغطًا على الذاكرة:

ذو صلة