לפני שמתחילים להשתמש ב-Firebase Local Emulator Suite, צריך לוודא שיצרתם פרויקט ב-Firebase, הגדרתם את סביבת הפיתוח ובחרתם והתקנתם את ערכות ה-SDK של Firebase לפלטפורמה שלכם בהתאם לנושאים במאמר תחילת העבודה עם Firebase לפלטפורמה הרלוונטית: Apple, Android או אינטרנט.
אב-טיפוס ובדיקה
Local Emulator Suite מכיל מספר אמולטורים של מוצרים, כפי שמתואר במאמר מבוא ל-Firebase Local Emulator Suite. תוכלו ליצור אב טיפוס ולבדוק באמצעות אמולטורים בודדים וכן שילובים של אמולטורים, לפי הצורך, בהתאם למוצרי Firebase שבהם אתם משתמשים בסביבת הייצור.
כדי להציג את תהליך העבודה של Local Emulator Suite, נניח שאתם עובדים על אפליקציה שמשתמשת בשילוב אופייני של מוצרים: מסד נתונים של Firebase ופונקציות בענן שמופעל על ידי פעולות במסד הנתונים הזה.
אחרי שמפעילים את הפרויקט ב-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 תוכלו לשנות שוב ושוב את העיצוב של מסד נתונים, לנסות תהליכי העברת נתונים שונים שכוללים פונקציות בענן, להעריך שינויים בכללי האבטחה, לבדוק יומנים כדי לוודא את הביצועים של שירותי הקצה העורפי ועוד. לאחר מכן, אם רוצים להתחיל מחדש, פשוט מנקים את מסד הנתונים ומתחילים מחדש עם רעיון עיצוב חדש.
כל האפשרויות האלה זמינות כשמפעילים את Local Emulator Suite באמצעות:
firebase emulators:start
כדי ליצור אב טיפוס לאפליקציה היפותטית, נגדיר ונבדוק פונקציית ענן בסיסית לשינוי רשומות טקסט במסד נתונים, וגם ניצור את מסד הנתונים הזה ונאכלס אותו ב-Emulator Suite UI כדי להפעיל אותו.
- כדי ליצור פונקציית cloud שמופעלת על ידי כתיבת בבסיס נתונים, עורכים את הקובץ
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
. הפעולה הזו מפעילה את הפונקציה שלנו בענן. שימו לב שבקרוב יופיע שדה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}); });
אתם יכולים לעבור בקלות בין קוד הפונקציה בענן לעריכות אינטראקטיביות של מסדי נתונים עד שתקבלו את זרימת הנתונים שאתם מחפשים, בלי לגעת בקוד הגישה למסדי הנתונים באפליקציה, בלי לבצע הידור מחדש ולהריץ מחדש חבילות בדיקות.
חיבור האפליקציה לאמולטורים
אחרי שתתקדמו כראוי ביצירת האב טיפוס האינטראקטיבי והחלטתם על עיצוב, תוכלו להוסיף לאפליקציה קוד גישה למסד נתונים באמצעות ה-SDK המתאים. כדי לוודא שההתנהגות של האפליקציה תקינה, תוכלו להמשיך להשתמש בכרטיסייה database (מסד נתונים) ובכרטיסייה Logs (יומנים) ב-Emulator Suite UI.
חשוב לזכור שה-Local Emulator Suite הוא כלי פיתוח מקומי. כתיבה במסדי הנתונים בסביבת הייצור לא תפעיל באופן מקומי פונקציות שיוצרים אב טיפוס.
כדי לעבור לאפשרות שהאפליקציה תבצע כתיבה למסד הנתונים, צריך לכוון את כיתות הבדיקה או את ההגדרות של האפליקציה לאמולטור Cloud Firestore.
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 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
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).