לפני שמתחילים להשתמש ב-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
שמכילה קוד של פונקציות בענן וקבצים תומכים אחרים.
יצירת אב טיפוס באופן אינטראקטיבי
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
- איך משתמשים במהדמ של Extensions כדי להעריך את Firebase Extensions ולצמצם את עלויות החיוב
מה הלאה?
חשוב לקרוא את הנושאים הקשורים למהדמרים ספציפיים שמקושרים למעלה. לאחר מכן:
- כדי לקבל קבוצה נבחרת של סרטונים ודוגמאות מפורטות לשימוש, אפשר לעיין ב פלייליסט ההדרכה של מכונות הווירטואליות של Firebase.
- כדאי לבדוק תרחישי שימוש מתקדמים שכוללים בדיקה של כללי האבטחה ו-Firebase Test SDK: בדיקת כללי האבטחה (Cloud Firestore), בדיקת כללי האבטחה (Realtime Database) ובדיקת כללי האבטחה (Cloud Storage for Firebase).