Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

अंतःक्रियात्मक रूप से परीक्षण कार्य

क्लाउड फ़ंक्शंस शेल परीक्षण डेटा के साथ फ़ंक्शन को लागू करने के लिए एक इंटरैक्टिव शेल प्रदान करता है। शेल सभी ट्रिगर प्रकारों का समर्थन करता है।

व्यवस्थापक क्रेडेंशियल सेट करें (वैकल्पिक)

यदि आप चाहते हैं कि आपके फ़ंक्शन परीक्षण Google API या अन्य Firebase API के साथ Firebase व्यवस्थापक SDK के माध्यम से इंटरैक्ट करें, तो आपको व्यवस्थापक क्रेडेंशियल सेट करने की आवश्यकता हो सकती है।

  • क्लाउड फायरस्टोर और रीयलटाइम डेटाबेस ट्रिगर के पास पहले से ही पर्याप्त क्रेडेंशियल हैं, और उन्हें अतिरिक्त सेटअप की आवश्यकता नहीं है।
  • फायरबेस एपीआई जैसे प्रमाणीकरण और एफसीएम या Google एपीआई जैसे क्लाउड ट्रांसलेशन या क्लाउड स्पीच सहित अन्य सभी एपीआई को इस अनुभाग में वर्णित सेटअप चरणों की आवश्यकता होती है। यह लागू होता है कि आप फ़ंक्शन शेल या firebase emulators:start का उपयोग कर रहे हैं firebase emulators:start

नकली कार्यों के लिए व्यवस्थापक क्रेडेंशियल सेट करने के लिए:

  1. Google क्लाउड कंसोल का सेवा खाता फलक खोलें।
  2. सुनिश्चित करें कि ऐप इंजन डिफ़ॉल्ट सेवा खाता चुना गया है, और कुंजी बनाएं का चयन करने के लिए दाईं ओर विकल्प मेनू का उपयोग करें।
  3. संकेत मिलने पर, कुंजी प्रकार के लिए JSON चुनें, और बनाएँ पर क्लिक करें
  4. डाउनलोड की गई कुंजी को इंगित करने के लिए अपने Google डिफ़ॉल्ट क्रेडेंशियल सेट करें:

    यूनिक्स

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase functions:shell
    

    खिड़कियाँ

    $ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    
    $ firebase functions:shell
    

इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन परीक्षण, Admin SDK का उपयोग करके Firebase और Google API तक पहुंच सकते हैं। उदाहरण के लिए, प्रमाणीकरण ट्रिगर का परीक्षण करते समय, एमुलेटेड फ़ंक्शन admin.auth().getUserByEmail(email) को कॉल कर सकता है।

क्लाउड फ़ंक्शंस शेल का उपयोग करके फ़ंक्शन परोसें

क्लाउड फ़ंक्शंस शेल परीक्षण डेटा के साथ फ़ंक्शंस को लागू करने के लिए एक इंटरैक्टिव शेल के साथ सभी प्रकार के फ़ंक्शन ट्रिगर का अनुकरण करता है। फ़ंक्शन प्रकार के अनुसार विकल्प भिन्न होते हैं, लेकिन मूल उपयोग प्रारूप है:

myFunctionName(data, options)

रीयलटाइम डेटाबेस, क्लाउड फायरस्टोर और पबसब ट्रिगर के लिए data पैरामीटर आवश्यक है, और अन्य सभी प्रकार के फ़ंक्शन के लिए वैकल्पिक है। साथ ही, वैकल्पिक options पैरामीटर केवल रीयलटाइम डेटाबेस और क्लाउड फायरस्टोर फ़ंक्शन के लिए मान्य है।

वैकल्पिक रूप से, आप फ़ाइल को एक चर के रूप में सहेजकर और इसके साथ एक फ़ंक्शन को लागू करके स्थानीय फ़ाइल से परीक्षण डेटा लोड कर सकते हैं:

var data = require('./path/to/testData.json');
myFunction(data);

क्लाउड फ़ंक्शंस शेल को स्थापित और कॉन्फ़िगर करें

इस सुविधा का उपयोग करने के लिए, firebase-tools का न्यूनतम संस्करण 3.11.0 होना चाहिए, और फायरबेस firebase-functions एसडीके का न्यूनतम संस्करण 0.6.2 होना चाहिए। दोनों को अपडेट करने के लिए, अपने प्रोजेक्ट के लिए functions/ निर्देशिका में निम्न कमांड चलाएँ:

npm install --save firebase-functions@latest
npm install -g firebase-tools

यदि आप कस्टम फ़ंक्शन कॉन्फ़िगरेशन चर का उपयोग कर रहे हैं, तो पहले अपने स्थानीय वातावरण में अपना कस्टम कॉन्फ़िगरेशन (इसे functions निर्देशिका में चलाएँ) प्राप्त करने के लिए कमांड चलाएँ:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json
firebase functions:shell

अंत में, निम्न कमांड के साथ शेल चलाएँ:

firebase functions:shell

HTTPS फ़ंक्शन को आमंत्रित करें

शेल में HTTPS फ़ंक्शन को लागू करने के लिए, उपयोग request NPM मॉड्यूल के समान है, लेकिन request को उस फ़ंक्शन के नाम से बदलें जिसे आप अनुकरण करना चाहते हैं। उदाहरण के लिए:

015बीएफबी70बी0

HTTPS कॉल करने योग्य कार्यों को आमंत्रित करें

HTTPS कॉल करने योग्य फ़ंक्शन को स्थानीय रूप से लागू करते समय, आपको उपयुक्त परीक्षण डेटा प्रदान करने की आवश्यकता होगी।

# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})

वैकल्पिक रूप से, आप दूसरे पैरामीटर के रूप में Firebase-Instance-ID-token में पास कर सकते हैं। यह एक स्ट्रिंग होना चाहिए।

# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})

context.auth का अनुकरण वर्तमान में उपलब्ध नहीं है।

रीयलटाइम डेटाबेस फ़ंक्शंस को आमंत्रित करें

रीयलटाइम डेटाबेस फ़ंक्शन को स्थानीय रूप से चलाते समय, आपको उपयुक्त परीक्षण डेटा प्रदान करने की आवश्यकता होगी। यह आम तौर पर के लिए नए परीक्षण डाटा उपलब्ध कराने का मतलब है onCreate संचालन, के लिए पुराने / हटा डेटा onDelete संचालन, और दोनों के लिए onUpdate या onWrite कार्य:

# invoke onCreate function
myDatabaseFunction('new_data')

# invoke onDelete function
myDatabaseFunction('old_data')

# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })

before/after विकल्पों के अलावा, शेल पथ में वाइल्डकार्ड का मजाक उड़ाने में उपयोग करने के लिए params विकल्प प्रदान करता है:

# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})

डिफ़ॉल्ट रूप से, शेल रीयलटाइम डेटाबेस फ़ंक्शन को व्यवस्थापक (सेवा खाता) विशेषाधिकारों के साथ चलाता है। इसके बजाय किसी विशेष अंतिम उपयोगकर्ता के रूप में, या एक अनधिकृत उपयोगकर्ता के रूप में कार्य चलाने के लिए auth विकल्प का उपयोग करें:

# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})

फायरस्टोर कार्यों को आमंत्रित करें

स्थानीय रूप से फायरस्टोर फ़ंक्शन चलाते समय, आपको उपयुक्त परीक्षण डेटा प्रदान करने की आवश्यकता होगी। यह आम तौर पर के लिए नए परीक्षण डाटा उपलब्ध कराने का मतलब है onCreate संचालन, के लिए पुराने / हटा डेटा onDelete संचालन, और दोनों के लिए onUpdate या onWrite कार्य करता है। ध्यान दें कि फायरस्टोर डेटा को की-वैल्यू पेयर होना चाहिए; समर्थित डेटा प्रकार देखें।

# invoke onCreate function
myFirestoreFunction({foo: ‘new’})

# invoke onDelete function
myFirestoreFunction({foo: ‘old’})

# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })

data ऑब्जेक्ट के before/after फ़ील्ड के अलावा, आप किसी दस्तावेज़ नाम में वाइल्डकार्ड को मॉक करने के लिए options ऑब्जेक्ट पर params फ़ील्ड का उपयोग कर सकते हैं:

# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})

शेल हमेशा प्रशासनिक विशेषाधिकारों के साथ फायरस्टोर फ़ंक्शन चलाता है, जिसका अर्थ है कि यह एक बनाने / अद्यतन / हटाने की घटना का मजाक उड़ाता है जैसे कि यह एक प्रशासनिक उपयोगकर्ता द्वारा किया गया था।

पबसुब कार्यों को आमंत्रित करें

पबसुब फ़ंक्शन के लिए, अपना संदेश पेलोड Buffer इंस्टेंस में डालें और वैकल्पिक रूप से डेटा विशेषताएँ जोड़ें जैसा कि दिखाया गया है:

// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})

विश्लेषिकी कार्यों को आमंत्रित करें

आप शेल में myAnalyticsFunction() चलाकर बिना किसी डेटा के किसी Analytics फ़ंक्शन को लागू कर सकते हैं। परीक्षण डेटा के साथ फ़ंक्शन को चलाने के लिए, आपके फ़ंक्शन की आवश्यकता वाले विशिष्ट ईवेंट डेटा फ़ील्ड के लिए एक चर परिभाषित करने की अनुशंसा की जाती है:

var data = {
  eventDim: [{
    // populates event.data.params
    params:{foo:'bar'},
    // populates event.data.name
    name: 'event_name',
    // populates event.data.logTime, specify in microseconds
    timestampMicros: Date.now() * 1000,
    // populates event.data.previousLogTime, specify in microseconds
    previousTimestampMicros: Date.now() * 1000,
    // populates event.data.reportingDate, specify in 'YYYYMMDD' format
    date: '20170930',
    // populates event.data.valueInUSD
    valueInUsd: 230
  }],
  userDim: userDim
};

myAnalyticsFunction(data);

संग्रहण, प्रमाणीकरण और क्रैशलिटिक्स फ़ंक्शन को आमंत्रित करें

स्टोरेज, ऑथेंटिक और क्रैशलिटिक्स फ़ंक्शंस के लिए, स्थानीय फ़ंक्शन को परीक्षण डेटा के साथ आमंत्रित करें जिसे आप फ़ंक्शन के अंदर देखना चाहते हैं। आपके परीक्षण डेटा को संबंधित डेटा प्रारूपों का पालन करना चाहिए:

  • क्लाउड स्टोरेज के लिए: ObjectMetadata
  • प्रमाणीकरण के लिए: UserRecord
  • क्रैशलाईटिक्स के लिए: Issue

केवल वे फ़ील्ड निर्दिष्ट करें जिन पर आपका कोड निर्भर करता है, या बिल्कुल भी नहीं यदि आप केवल फ़ंक्शन चलाना चाहते हैं।