לפני שמתחילים להשתמש ב-Firebase Local Emulator Suite, צריך ליצור פרויקט ב-Firebase, להגדיר את סביבת הפיתוח ולבחור ולהתקין ערכות Firebase SDK לפלטפורמה שלכם, בהתאם לנושאים שמפורטים במאמר תחילת העבודה עם Firebase: Apple, Android או אינטרנט.
יצירת אב טיפוס ובדיקה
Local Emulator Suite מכיל כמה אמולטורים של מוצרים, כפי שמתואר במאמר מבוא ל-Firebase Local Emulator Suite. אתם יכולים ליצור אב טיפוס ולבדוק אותו באמצעות אמולטורים נפרדים או שילובים של אמולטורים, בהתאם למוצרי Firebase שבהם אתם משתמשים בסביבת הייצור.
כדי להציג את תהליך העבודה של Local Emulator Suite, נניח שאתם עובדים על אפליקציה שמשתמשת בשילוב אופייני של מוצרים: מסד נתונים של Firebase ופונקציות של Cloud Functions שמופעלות על ידי פעולות במסד הנתונים הזה.
אחרי שמפעילים באופן מקומי את פרויקט Firebase, מחזור הפיתוח באמצעות Local Emulator Suite כולל בדרך כלל שלושה שלבים:
אפשר לפתח אב טיפוס של תכונות באופן אינטראקטיבי באמצעות האמולטורים ו-Emulator Suite UI.
אם אתם משתמשים באמולטור של מסד נתונים או באמולטור של Cloud Functions, תצטרכו לבצע שלב חד-פעמי כדי לחבר את האפליקציה לאמולטורים.
אוטומציה של הבדיקות באמצעות אמולטורים וסקריפטים בהתאמה אישית.
הפעלה מקומית של פרויקט Firebase
חשוב לוודא שהתקנתם את ה-CLI או עדכנתם לגרסה העדכנית.
curl -sL firebase.tools | bashאם עדיין לא עשיתם את זה, אתחלו את ספריית העבודה הנוכחית כפרויקט Firebase, לפי ההנחיות במסך כדי לציין שאתם משתמשים ב-Cloud Functions וב-Cloud Firestore או ב-Realtime Database:
firebase initעכשיו ספריית הפרויקט תכיל קובצי תצורה של Firebase, קובץ הגדרה של Firebase Security Rules למסד הנתונים, ספריית functions שמכילה קוד של פונקציות של Cloud Functions וקבצים תומכים אחרים.
יצירת אב טיפוס אינטראקטיבי
Local Emulator Suite נועד לאפשר לכם ליצור במהירות אב טיפוס של תכונות חדשות, וממשק המשתמש המובנה של Suite הוא אחד מכלי אב הטיפוס השימושיים ביותר. זה קצת כמו להריץ את מסוף Firebase באופן מקומי.
באמצעות Emulator Suite UI, אתם יכולים לחזור על העיצוב של מסד נתונים, לנסות תהליכי נתונים שונים שכוללים פונקציות של Cloud Functions, להעריך שינויים בכללי האבטחה, לבדוק יומנים כדי לאשר את הביצועים של שירותי הקצה העורפי ועוד. אם רוצים להתחיל מחדש, פשוט מנקים את מסד הנתונים ומתחילים עם רעיון חדש לעיצוב.
כל האפשרויות האלה זמינות כשמתחילים את Local Emulator Suite עם:
firebase emulators:startכדי ליצור אב טיפוס של האפליקציה ההיפותטית שלנו, נגדיר ונבדוק פונקציה בסיסית של Cloud Functions לשינוי רשומות טקסט במסד נתונים, וניצור ונאכלס את מסד הנתונים הזה ב-Emulator Suite UI כדי להפעיל אותו.
- כדי ליצור פונקציה של Cloud Functions שמופעלת על ידי כתיבה במסד הנתונים, עורכים את הקובץ
functions/index.jsבספריית הפרויקט. מחליפים את התוכן של הקובץ הקיים בקטע הקוד הבא. הפונקציה הזו מאזינה לשינויים במסמכים באוסףmessages, ממירה את התוכן של השדהoriginalבמסמך לאותיות רישיות, ושומרת את התוצאה בשדהuppercaseשל המסמך. - מפעילים את Local Emulator Suite באמצעות
firebase emulators:start. האמולטורים של Cloud Functions ושל מסד הנתונים מופעלים, ומוגדרים באופן אוטומטי לפעול יחד. - מציגים את ממשק המשתמש בדפדפן בכתובת
http://localhost:4000. יציאה 4000 היא ברירת המחדל של ממשק המשתמש, אבל כדאי לבדוק את הודעות הטרמינל שמופיעות בפלט של ה-CLI של Firebase. שימו לב לסטטוס של האמולטורים הזמינים. במקרה שלנו, האמולטורים Cloud Functions ו-Cloud Firestore יפעלו.
- בממשק המשתמש, בכרטיסייה Firestore > Data, לוחצים על Start collection ופועלים לפי ההנחיות כדי ליצור מסמך חדש באוסף
messages, עם שם השדהoriginalוהערךtest. הפעולה הזו מפעילה את הפונקציה של Cloud Functions. שימו לב ששדהuppercaseחדש מופיע תוך זמן קצר, ומאוכלס במחרוזת "TEST".
- בכרטיסייה Firestore > Requests, בודקים את הבקשות שנשלחו למסד הנתונים המדומה, כולל כל הערכות Firebase Security Rules שבוצעו כחלק מהמילוי של הבקשות האלה.
- בודקים בכרטיסייה Logs שהפונקציה לא נתקלה בשגיאות בזמן עדכון מסד הנתונים.
const functions = require('firebase-functions/v1'); exports.makeUppercase = functions.firestore.document('/messages/{documentId}') .onCreate((snap, context) => { const original = snap.data().original; console.log('Uppercasing', context.params.documentId, original); const uppercase = original.toUpperCase(); return snap.ref.set({uppercase}, {merge: true}); });
אתם יכולים לעבור בקלות בין הקוד של פונקציה של Cloud Functions לבין עריכות אינטראקטיביות של מסד הנתונים עד שתקבלו את זרימת הנתונים הרצויה, בלי לגעת בקוד הגישה למסד הנתונים בתוך האפליקציה, לקמפל מחדש ולהריץ מחדש חבילות מקרים לבדיקה.
חיבור האפליקציה לאמולטורים
אחרי שתתקדמו עם יצירת אב טיפוס אינטראקטיבי ותחליטו על עיצוב, תוכלו להוסיף לאפליקציה קוד גישה למסד הנתונים באמצעות ה-SDK המתאים. כדי לוודא שהאפליקציה פועלת בצורה תקינה, תמשיכו להשתמש בכרטיסייה Database ובכרטיסייה Logs של הפונקציות ב-Emulator Suite UI.
חשוב לזכור ש-Local Emulator Suite הוא כלי למפתחים מקומי. פעולות כתיבה במסדי הנתונים בסביבת הייצור לא יפעילו פונקציות שאתם יוצרים להן אב טיפוס באופן מקומי.
כדי לעבור למצב שבו האפליקציה מבצעת כתיבה למסד הנתונים, צריך להפנות את מחלקות הבדיקה או את ההגדרות האישיות באפליקציה לאמולטור Cloud Firestore.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance; // Connects to the Firestore Emulator running on port 8080 db.Settings.Host = "127.0.0.1:8080"; db.Settings.SslEnabled = false;
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
אוטומציה של הבדיקות באמצעות סקריפטים בהתאמה אישית
עכשיו נשאר רק השלב האחרון בתהליך העבודה הכולל. אחרי שיצרתם אב טיפוס של התכונה באפליקציה והוא נראה מבטיח בכל הפלטפורמות, אתם יכולים לעבור להטמעה ולבדיקה הסופיות. לבדיקות יחידה ולתהליכי עבודה של CI, אפשר להפעיל אמולטורים, להריץ בדיקות מבוססות-סקריפט ולכבות אמולטורים בקריאה אחת באמצעות הפקודה exec:
firebase emulators:exec "./testdir/test.sh"מידע מעמיק יותר על אמולטורים ספציפיים
עכשיו, אחרי שראיתם איך נראה תהליך העבודה הבסיסי בצד הלקוח, אתם יכולים להמשיך לקרוא פרטים על האמולטורים השונים בחבילה, כולל איך להשתמש בהם לפיתוח אפליקציות בצד השרת:
- הוספת האמולטור של Authentication לתהליכי העבודה של יצירת אב טיפוס
- מידע מעמיק על התכונות של האמולטור Realtime Database
- מידע מעמיק על התכונות של האמולטור Cloud Storage for Firebase
- מידע מעמיק על התכונות של האמולטור Cloud Firestore
- קישור האפליקציה לאמולטור של Cloud Functions
- הערכת Firebase Extensions תוך צמצום עלויות החיוב באמצעות האמולטור של Extensions
מה הלאה?
חשוב לקרוא את הנושאים שקשורים לאמולטורים ספציפיים שמקושרים למעלה. לאחר מכן:
- ב פלייליסט ההדרכה של אמולטורים של Firebase יש אוסף של סרטונים ודוגמאות מפורטות.
- תרחישי שימוש מתקדמים שכוללים בדיקה של כללי אבטחה ו-Firebase Test SDK: בדיקת כללי אבטחה (Cloud Firestore), בדיקת כללי אבטחה (Realtime Database) ובדיקת כללי אבטחה (Cloud Storage for Firebase).