اختبار Plugins
مرجع لأدوات الاختبار والأنماط وفرض lint الخاصة بـ Plugins في OpenClaw.أدوات الاختبار
الاستيراد:openclaw/plugin-sdk/testing
يكشف المسار الفرعي الخاص بالاختبار مجموعة ضيقة من المساعدات لمطوري plugins:
الصادرات المتاحة
| التصدير | الغرض |
|---|---|
installCommonResolveTargetErrorCases | حالات اختبار مشتركة لأخطاء تحليل الهدف |
shouldAckReaction | التحقق مما إذا كانت القناة يجب أن تضيف تفاعل ack |
removeAckReactionAfterReply | إزالة تفاعل ack بعد تسليم الرد |
الأنواع
يعيد المسار الفرعي الخاص بالاختبار أيضًا تصدير أنواع مفيدة داخل ملفات الاختبار:اختبار تحليل الأهداف
استخدمinstallCommonResolveTargetErrorCases لإضافة حالات الأخطاء القياسية
لتحليل أهداف القناة:
أنماط الاختبار
اختبار وحدة لـ plugin قناة
اختبار وحدة لـ plugin موفّر
محاكاة وقت تشغيل plugin
بالنسبة إلى الشيفرة التي تستخدمcreatePluginRuntimeStore، قم بمحاكاة وقت التشغيل في الاختبارات:
الاختبار باستخدام stubs لكل مثيل
فضّل استخدام stubs لكل مثيل بدلًا من تغيير prototype:اختبارات العقد (plugins داخل المستودع)
تحتوي plugins المضمّنة على اختبارات عقد تتحقق من ملكية التسجيل:- أي plugins تسجل أي موفّرين
- أي plugins تسجل أي موفري كلام
- صحة شكل التسجيل
- الامتثال لعقد وقت التشغيل
تشغيل اختبارات محددة النطاق
بالنسبة إلى plugin محدد:فرض lint (plugins داخل المستودع)
يتم فرض ثلاث قواعد بواسطةpnpm check على plugins داخل المستودع:
- لا استيرادات جذرية ضخمة — يتم رفض root barrel
openclaw/plugin-sdk - لا استيرادات مباشرة من
src/— لا يمكن للـ plugins الاستيراد من../../src/مباشرة - لا استيرادات ذاتية — لا يمكن للـ plugins استيراد مسارها الفرعي
plugin-sdk/<name>الخاص بها
إعداد الاختبار
يستخدم OpenClaw أداة Vitest مع حدود تغطية V8. وبالنسبة إلى اختبارات plugins:ذو صلة
- نظرة عامة على SDK — اصطلاحات الاستيراد
- SDK الخاص بـ Plugins القنوات — واجهة plugin القناة
- SDK الخاص بـ Plugins الموفّر — خطافات plugin الموفّر
- بناء Plugins — دليل البدء