Firebase CLI כולל אמולטור Cloud Functions שיכול לחקות את סוגי הפונקציות הבאים:
- פונקציות HTTPS
- פונקציות הניתנות להתקשרות
- פונקציות רקע המופעלות מאימות Firebase, מסד נתונים בזמן אמת, Cloud Firestore, Cloud Storage ו-Cloud Pub/Sub.
אתה יכול להפעיל פונקציות באופן מקומי כדי לבדוק אותן לפני הפריסה לייצור.
התקן את Firebase CLI
כדי להשתמש באמולטור Cloud Functions, התקן תחילה את Firebase CLI:
npm install -g firebase-tools
על מנת להשתמש באמולטור המקומי, פונקציות הענן שלך חייבות להיות תלויות ב:
-
firebase-admin
גרסה8.0.0
ומעלה. -
firebase-functions
גרסה3.0.0
ומעלה.
הגדרת אישורי מנהל מערכת (אופציונלי)
אם אתה רוצה שבדיקות הפונקציות שלך יתקשרו עם ממשקי API של Google או ממשקי API אחרים של Firebase דרך Firebase Admin SDK , ייתכן שתצטרך להגדיר אישורי מנהל.
- לטריגרים של Cloud Firestore ו- Realtime Database יש כבר אישורים מספיקים ואינם דורשים הגדרה נוספת.
- כל שאר ממשקי ה-API, כולל ממשקי API של Firebase כגון Authentication ו-FCM או ממשקי API של Google כגון Cloud Translation או Cloud Speech, דורשים את שלבי ההגדרה המתוארים בסעיף זה. זה חל בין אם אתה משתמש במעטפת Cloud Functions או
firebase emulators:start
.
כדי להגדיר אישורי מנהל עבור פונקציות מדמות:
- פתח את החלונית חשבונות שירות של מסוף Google Cloud.
- ודא שחשבון שירות ברירת המחדל של App Engine נבחר, והשתמש בתפריט האפשרויות מימין כדי לבחור צור מפתח .
- כאשר תתבקש, בחר JSON עבור סוג המפתח, ולחץ על צור .
הגדר את אישורי ברירת המחדל של Google כך שיצביעו על המפתח שהורד:
יוניקס
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
חלונות
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
לאחר השלמת השלבים האלה, מבחני הפונקציות שלך יכולים לגשת לממשקי Firebase ו-Google API באמצעות ה- Admin SDK . לדוגמה, בעת בדיקת טריגר של אימות, הפונקציה המדומה יכולה לקרוא ל- admin.auth().getUserByEmail(email)
.
הגדרת תצורת פונקציות (אופציונלי)
אם אתה משתמש במשתני תצורה של פונקציות מותאמות אישית, הפעל תחילה את הפקודה כדי לקבל את התצורה המותאמת אישית שלך (הפעל את זה בתוך ספריית functions
) בסביבה המקומית שלך:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
הפעל את חבילת האמולטור
כדי להפעיל את אמולטור Cloud Functions, השתמש בפקודה emulators:start
:
firebase emulators:start
הפקודה emulators:start
תתחיל אמולטורים עבור Cloud Functions, Cloud Firestore, Realtime Database ו-Firebase Hosting בהתבסס על המוצרים שאתחלת בפרויקט המקומי שלך באמצעות firebase init
. אם אתה רוצה להפעיל אמולטור מסוים, השתמש בדגל --only
:
firebase emulators:start --only functions
אם ברצונך להפעיל חבילת בדיקה או סקריפט בדיקה לאחר הפעלת האמולטורים, השתמש בפקודה emulators:exec
:
firebase emulators:exec "./my-test.sh"
מכשיר את האפליקציה שלך לדבר עם האמולטורים
כדי להכשיר את האפליקציה שלך לאינטראקציה עם האמולטורים, ייתכן שתצטרך לבצע הגדרות נוספות.
התקן את האפליקציה שלך לפונקציות הניתנות להתקשרות
אם אב הטיפוס ופעילויות הבדיקה שלך כוללות פונקציות אחורי הניתנות להתקשרות , הגדר את האינטראקציה עם אמולטור Cloud Functions for Firebase כך:
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
מָהִיר
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web modular API
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web namespaced API
firebase.functions().useEmulator("127.0.0.1", 5001);
מכשירים את האפליקציה שלך לאמולציה של פונקציות HTTPS
כל פונקציית HTTPS בקוד שלך תוגש מהאמולטור המקומי באמצעות פורמט כתובת האתר הבא:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
לדוגמה, פונקציית helloWorld
פשוטה עם יציאת ברירת המחדל והאזור המארח תוגש ב:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
מכשירים את האפליקציה שלך לאמולציה של פונקציות המופעלות על רקע
אמולטור Cloud Functions תומך בפונקציות המופעלות על רקע מהמקורות הבאים:
- אמולטור מסדי נתונים בזמן אמת
- אמולטור Cloud Firestore
- אמולטור אימות
- אמולטור פאב/סאב
כדי להפעיל אירועי רקע, שנה את המשאבים האחוריים באמצעות ממשק המשתמש של Emulator Suite, או על ידי חיבור האפליקציה או קוד הבדיקה שלך לאמולטורים באמצעות SDK עבור הפלטפורמה שלך.
מטפלי בדיקה עבור אירועים מותאמים אישית הנפלטים על ידי הרחבות
עבור פונקציות שאתה מיישם כדי לטפל באירועים מותאמים אישית של Firebase Extensions עם Cloud Functions v2, אמולטור Cloud Functions מתחבר עם אמולטור Eventarc כדי לתמוך בטריגרים של Eventarc .
כדי לבדוק מטפלי אירועים מותאמים אישית עבור תוספים שפולטים אירועים, עליך להתקין את האמולטורים של Cloud Functions ו-Eventarc.
זמן הריצה של Cloud Functions מגדיר את משתנה הסביבה EVENTARC_EMULATOR
ל- localhost:9299
בתהליך הנוכחי אם האמולטור של Eventarc פועל. ערכות ה-SDK של Firebase Admin מתחברים אוטומטית לאמולטור Eventarc כאשר משתנה הסביבה EVENTARC_EMULATOR
מוגדר. אתה יכול לשנות את יציאת ברירת המחדל כפי שנדון תחת הגדרת חבילת אמולטור מקומית .
כאשר משתני סביבה מוגדרים כהלכה, Firebase Admin SDK שולח באופן אוטומטי אירועים לאמולטור Eventarc. בתורו, אמולטור Eventarc מבצע קריאה חזרה לאמולטור Cloud Functions כדי להפעיל מטפלים רשומים.
אתה יכול לבדוק יומני פונקציות בממשק המשתמש של Emulator Suite לקבלת פרטים על ביצוע מטפל.
אינטראקציות עם שירותים אחרים
חבילת האמולטורים כוללת אמולטורים מרובים, המאפשרים בדיקה של אינטראקציות בין מוצרים.
Cloud Firestore
אם יש לך פונקציות המשתמשות ב-Firebase Admin SDK כדי לכתוב ל-Cloud Firestore, הכתבים האלה יישלחו לאמולטור Cloud Firestore אם הוא פועל. אם פונקציות נוספות יופעלו על ידי כתיבה אלו, הן יופעלו באמולטור Cloud Functions.
אחסון בענן
אם יש לך פונקציות המשתמשות ב-Firebase Admin SDK (גרסה 9.7.0 ומעלה) כדי לכתוב ל-Cloud Storage, הכתבים האלה יישלחו לאמולטור Cloud Storage אם הוא פועל. אם פונקציות נוספות יופעלו על ידי כתיבה אלו, הן יופעלו באמולטור Cloud Functions.
אימות Firebase
אם יש לך פונקציות המשתמשות ב-Firebase Admin SDK (גרסה 9.3.0 ומעלה) כדי לכתוב ל-Firebase Authentication, הכתבים האלה יישלחו לאמולטור Auth אם הוא פועל. אם פונקציות נוספות יופעלו על ידי כתיבה אלו, הן יופעלו באמולטור Cloud Functions.
אירוח ב-Firebase
אם אתה משתמש ב-Cloud Functions כדי ליצור תוכן דינמי עבור Firebase Hosting , firebase emulators:start
משתמש בפונקציות ה-HTTP המקומיות שלך בתור פרוקסי לאירוח.
רישום
האמולטור מזרים יומנים מהפונקציות שלך לחלון הטרמינל שבו הם פועלים. הוא מציג את כל הפלט מהצהרות console.log()
, console.info()
, console.error()
ו- console.warn()
בתוך הפונקציות שלך.
הצעדים הבאים
לקבלת דוגמה מלאה לשימוש בחבילת האמולטור של Firebase, עיין בדוגמה להתחלה מהירה לבדיקה .