בדיקת פונקציות אינטראקטיבית

מעטפת פונקציות הענן מספקת מעטפת אינטראקטיבית להפעלת פונקציות עם נתוני בדיקה. המעטפת תומכת בכל סוגי ההדק.

הגדר אישורי מנהל מערכת (אופציונלי)

אם אתה רוצה הבדיקות התפקודיות שלך לתקשר עם Google APIs או APIs Firebase האחר באמצעות SDK של ניהול Firebase , ייתכן שתצטרך להגדיר את אישורי מנהל.

  • ענן Firestore ואת זמן אמת טריגרים Database יש כבר אישורים מספקים, ואינם דורשים התקנה נוספת.
  • כל ממשקי API אחרים, כולל ממשקי API של Firebase כגון אימות ו- FCM או ממשקי API של Google כגון תרגום ענן או דיבור בענן, דורשים את שלבי ההתקנה המתוארים בסעיף זה. זה חל בין אם אתה משתמש בפונקציות פגז או firebase emulators:start .

כדי להגדיר אישורי מנהל עבור פונקציות מדומות:

  1. פתח את חלונית שירות החשבונות של קונסולת הענן של Google.
  2. ודא כי חשבון השירות מחדל App Engine נבחר, והשתמש בתפריט האפשרויות על הזכות לבחור יצירת מפתח.
  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
    

לאחר השלמת השלבים הללו, הבדיקות התפקודיות שלך יכולות לגשת APIs Firebase ו- Google באמצעות SDK של הניהול . לדוגמה, כאשר בודקים טריגר אימות, הפונקציה לחיקוי יכול להתקשר admin.auth().getUserByEmail(email) .

הגיש פונקציות באמצעות מעטפת Cloud Functions

מעטפת פונקציות הענן מחקה את כל סוגי הפעלת הפונקציות עם מעטפת אינטראקטיבית להפעלת הפונקציות עם נתוני בדיקה. האפשרויות משתנות לפי סוג הפונקציה, אך פורמט השימוש הבסיסי הוא:

myFunctionName(data, options)

data הפרמטר נדרש עבור מסד זמן אמת, ענן Firestore, וטריגרים PubSub, ו אופציונאלי לכול סוגי הפונקציה האחרים. כמו כן, חובת options הפרמטר תקף רק עבור מסד זמן אמת ופונקציות הענן firestore.

לחלופין, תוכל לטעון נתוני בדיקה מקובץ מקומי על ידי שמירת הקובץ כמשתנה והפעלת פונקציה באמצעותו:

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

התקן והגדר את מעטפת Cloud Functions

כדי להשתמש בתכונה זו, 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'}})

הפעל את פונקציות Firestore

בעת הפעלת פונקציות Firestore באופן מקומי, יהיה עליך לספק נתוני בדיקה מתאימים. משמעות הדבר היא, בדרך כלל, מתן נתון בדיקה חדשים onCreate פעולות, זקן / נתונים שהוסר עבור onDelete פעולות, ושניהם עבור onUpdate או onWrite פונקציות. שים לב שנתוני Firestore חייבים להיות זוגות עם ערך מפתח; לראות סוגי הנתונים הנתמכים .

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

המעטפת מריצה תמיד פונקציות Firestore עם הרשאות ניהול, מה שאומר שהיא לועג לאירוע יצירה / עדכון / מחיקה כאילו נעשה על ידי משתמש אדמיניסטרטיבי.

הפעל פונקציות PubSub

עבור פונקציות PubSub, הכנס מטען המסר שלך Buffer למשל ולהוסיף אופציונאלי תכונות נתונים כמוצגים:

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

הפעל פונקציות של Analytics

ניתן להפעיל פונקציה 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);

הפעל פונקציות אחסון, אימות וקראשליטיקה

לפונקציות אחסון, אימות וקראשליטיקה, הפעל את הפונקציה המקומית עם נתוני הבדיקה שתרצה לראות בתוך הפונקציה. על נתוני הבדיקה שלך להתאים לפורמטי הנתונים המתאימים:

ציין רק את השדות שהקוד שלך תלוי בהם, או בכלל אם אתה רק רוצה להפעיל את הפונקציה.