Skip to main content
OpenClaw Plugins के लिए परीक्षण उपयोगिताओं, पैटर्न और लिंट प्रवर्तन का संदर्भ।
परीक्षण उदाहरण खोज रहे हैं? कैसे-करें मार्गदर्शिकाओं में व्यावहारिक परीक्षण उदाहरण शामिल हैं: चैनल Plugin परीक्षण और प्रदाता Plugin परीक्षण

परीक्षण उपयोगिताएँ

ये उपपथ OpenClaw के अपने बंडल किए गए Plugin परीक्षणों के लिए रिपॉज़िटरी-स्थानीय स्रोत एंट्रीपॉइंट हैं। इन्हें तृतीय-पक्ष Plugins के लिए 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 का उपयोग करें:

परीक्षण प्रतिरूप

पंजीकरण कॉन्ट्रैक्ट का परीक्षण

register(api) को हाथ से लिखा हुआ api मॉक देने वाले यूनिट परीक्षण OpenClaw के लोडर स्वीकृति गेट का परीक्षण नहीं करते। आपका Plugin जिस प्रत्येक पंजीकरण सतह पर निर्भर है, उसके लिए कम-से-कम एक लोडर-समर्थित स्मोक परीक्षण जोड़ें, विशेष रूप से हुक और मेमोरी जैसी विशिष्ट क्षमताओं के लिए। आवश्यक मेटाडेटा अनुपस्थित होने या किसी Plugin द्वारा ऐसी क्षमता API को कॉल करने पर, जिसका वह स्वामी नहीं है, वास्तविक लोडर Plugin पंजीकरण को विफल कर देता है। उदाहरण के लिए, api.registerHook(...) के लिए हुक नाम आवश्यक है और api.registerMemoryCapability(...) के लिए Plugin मैनिफ़ेस्ट या निर्यातित प्रविष्टि में kind: "memory" घोषित होना आवश्यक है।

रनटाइम कॉन्फ़िगरेशन पहुँच का परीक्षण

openclaw/plugin-sdk/plugin-test-runtime से साझा Plugin रनटाइम मॉक को प्राथमिकता दें। इसकी रनटाइम कॉन्फ़िगरेशन सहायिकाएँ वर्तमान स्नैपशॉट और म्यूटेशन 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 परीक्षणों के लिए:
यदि स्थानीय रन से मेमोरी पर दबाव पड़ता है:

संबंधित