הפעל פונקציות באופן מקומי

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 .

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

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