Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

आप अपने कार्यों परीक्षण के माध्यम से गूगल एपीआई या अन्य Firebase एपीआई के साथ बातचीत करना चाहते हैं Firebase नियंत्रक SDK , आप व्यवस्थापक क्रेडेंशियल स्थापित करने के लिए आवश्यकता हो सकती है।

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

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

  1. खोलें सेवा खाते फलक Google क्लाउड कंसोल की।
  2. सुनिश्चित करें कि App इंजन डिफ़ॉल्ट सेवा खाते चयनित है, और कुंजी बनाएँ का चयन करने के लिए सही पर विकल्प मेनू का उपयोग करें।
  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
    

इन चरणों को पूरा करने के बाद, अपने कार्यों परीक्षण का उपयोग Firebase और गूगल एपीआई का उपयोग कर सकते नियंत्रक SDK । उदाहरण के लिए, जब एक प्रमाणीकरण ट्रिगर परीक्षण, नकल करते समारोह कह सकते हैं admin.auth().getUserByEmail(email)

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

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

myFunctionName(data, options)

data पैरामीटर रीयलटाइम डाटाबेस, बादल Firestore, और पबसब चलाता के लिए आवश्यक है, और अन्य सभी प्रकार के समारोह के लिए वैकल्पिक है। इसके अलावा, वैकल्पिक options पैरामीटर केवल रीयलटाइम डेटाबेस और बादल के firestore कार्यों के लिए मान्य है।

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

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

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

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

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

आप कस्टम कार्यों विन्यास चर का उपयोग कर रहे हैं, तो पहले (के भीतर इस चलाने के अपने कस्टम config प्राप्त करने के लिए आदेश चला 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

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

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

# invoke
myHttpsFunction()
myHttpsFunction.get()
myHttpsFunction.post()

# invoke at sub-path
myHttpsFunction('/path')
myHttpsFunction.get('/path')
myHttpsFunction.post('/path')

# send POST request with form data
myHttpsFunction.post('/path').form( {foo: 'bar' })

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’} })

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

# 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'}})

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

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

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

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