قبل ربط تطبيقك بمحاكي Realtime Database، تأكَّد من أنك تفهم سير العمل العام Firebase Local Emulator Suite، ومن أنك تثبّت Local Emulator Suite وتُعدّها وتراجع أوامر واجهة سطر الأوامر الخاصة بها.
اختيار مشروع Firebase
تحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.
لاختيار المشروع الذي تريد استخدامه، شغِّل الأمر firebase use في واجهة سطر الأوامر ضمن دليل العمل قبل بدء المحاكيات. يمكنك أيضًا تمرير
العلامة --project إلى كل أمر من أوامر المحاكي.
Local Emulator Suite تتيح محاكاة مشاريع Firebase الحقيقية ومشاريع توضيحية.
| نوع المشروع | الميزات | الاستخدام مع المحاكيات |
|---|---|---|
| حقيقي |
مشروع Firebase الحقيقي هو مشروع أنشأته وأعددته (على الأرجح من خلال وحدة تحكّم Firebase). تحتوي المشاريع الحقيقية على موارد نشطة، مثل مثيلات قاعدة البيانات أو مساحات تخزين أو دوال أو أي مورد آخر أعددته لمشروع Firebase هذا. |
عند العمل مع مشاريع Firebase الحقيقية، يمكنك تشغيل المحاكيات لأي من المنتجات المتوافقة أو جميعها. بالنسبة إلى أي منتجات لا تحاكيها، ستتفاعل تطبيقاتك ورمزك مع المورد النشط (مثيل قاعدة البيانات أو مساحة التخزين أو الدالة وما إلى ذلك). |
| توضيحي |
لا يحتوي مشروع Firebase التوضيحي على أي إعداد حقيقي على Firebase و لا على أي موارد نشطة. يمكن الوصول إلى هذه المشاريع عادةً من خلال المختبرات البرمجية أو البرامج التعليمية الأخرى. تحتوي معرّفات المشاريع التوضيحية على البادئة |
عند العمل مع مشاريع Firebase التوضيحية، تتفاعل تطبيقاتك ورمزك مع المحاكيات فقط. إذا حاول تطبيقك التفاعل مع مورد لا يتم تشغيل محاكي له، سيتعذّر تنفيذ هذا الرمز. |
ننصحك باستخدام المشاريع التوضيحية كلما أمكن ذلك. تتضمّن المزايا ما يلي:
- إعداد أسهل، لأنّه يمكنك تشغيل المحاكيات بدون إنشاء مشروع على Firebase
- أمان أقوى، لأنّه إذا استدعى الرمز عن طريق الخطأ موارد غير محاكاة (في مرحلة الإنتاج)، لن يكون هناك أي احتمال لتغيير البيانات أو الاستخدام أو الفوترة
- دعم أفضل بلا إنترنت، لأنّه ليس من الضروري الوصول إلى الإنترنت لتنزيل إعداد حزمة تطوير البرامج (SDK)
إعداد تطبيقك للتواصل مع المحاكيات
حزم تطوير البرامج (SDK) لأنظمة التشغيل Android وApple والويب
يمكنك إعداد الإعدادات داخل التطبيق أو فئات الاختبار للتفاعل مع الـ Realtime Database على النحو التالي.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val database = Firebase.database database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseDatabase database = FirebaseDatabase.getInstance(); database.useEmulator("10.0.2.2", 9000);
Swift
// In almost all cases the ns (namespace) is your project ID. let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")
Unity
// Connects to the RTDB Emulator running on port 9000. // Note: You may need to append your namespace: "?ns=YOUR_PROJECT_ID" FirebaseDatabase database = FirebaseDatabase.GetInstance("http://127.0.0.1:9000");
Web
import { getDatabase, connectDatabaseEmulator } from "firebase/database"; const db = getDatabase(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. connectDatabaseEmulator(db, "127.0.0.1", 9000); }
Web
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("127.0.0.1", 9000); }
لا يلزم إجراء أي إعداد إضافي لاختبار "الدوال المستندة إلى الأحداث على السحابة الإلكترونية" التي يتم تشغيلها من خلال أحداث Realtime Database باستخدام المحاكي. عند تشغيل كلّ من محاكي قاعدة بيانات الوقت الفعلي ومحاكي الدوال المستندة إلى الأحداث على السحابة الإلكترونية، سيعملان معًا تلقائيًا.
Admin SDKs
تتصل Firebase Admin SDK تلقائيًا بمحاكي Realtime Database عند
ضبط متغيّر البيئة FIREBASE_DATABASE_EMULATOR_HOST:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
إذا كان الرمز قيد التشغيل داخل محاكي Cloud Functions، سيتم ضبط معرّف مشروعك
والإعدادات الأخرى تلقائيًا عند استدعاء initializeApp.
إذا أردت أن يتصل رمز Admin SDK الخاص بك بمحاكي مشترك قيد التشغيل في
بيئة أخرى، عليك تحديد معرّف المشروع نفسه الذي ضبطته باستخدام واجهة سطر الأوامر في Firebase.
يمكنك تمرير معرّف مشروع إلى initializeApp مباشرةً أو ضبط متغيّر البيئة GCLOUD_PROJECT.
حزمة تطوير البرامج (SDK) للمشرف في Node.js
admin.initializeApp({ projectId: "your-project-id" });
متغيّر البيئة
export GCLOUD_PROJECT="your-project-id"
محو قاعدة البيانات بين الاختبارات
لمحو Realtime Database بين الأنشطة، يمكنك محو مرجع قاعدة البيانات. يمكنك استخدام هذا النهج كبديل لإيقاف عملية المحاكي ببساطة.
Kotlin
// With a DatabaseReference, write null to clear the database. database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database. database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
import { getDatabase, ref, set } from "firebase/database"; // With a database Reference, write null to clear the database. const db = getDatabase(); set(ref(db), null);
Web
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
من الطبيعي أن ينتظر الرمز تأكيدًا على اكتمال عملية المحو أو تعذُّرها باستخدام ميزات معالجة الأحداث غير المتزامنة في منصتك.
بعد تنفيذ خطوة كهذه، يمكنك ترتيب اختباراتك وتشغيل الدوال بثقة بأنّه سيتم محو البيانات القديمة بين عمليات التشغيل وأنّك تستخدم إعداد اختبار أساسيًا جديدًا.
استيراد البيانات وتصديرها
تتيح لك محاكيات قاعدة البيانات وCloud Storage for Firebase تصدير البيانات من مثيل محاكي قيد التشغيل. يمكنك تحديد مجموعة أساسية من البيانات لاستخدامها في اختبارات الوحدات أو مهام التكامل المستمر، ثم تصديرها لمشاركتها مع الفريق.
firebase emulators:export ./dirفي الاختبارات، عند بدء المحاكي، استورِد البيانات الأساسية.
firebase emulators:start --import=./dirيمكنك توجيه المحاكي لتصدير البيانات عند إيقافه، إما من خلال تحديد مسار تصدير أو ببساطة باستخدام المسار الذي تم تمريره إلى العلامة --import.
firebase emulators:start --import=./dir --export-on-exitتعمل خيارات استيراد البيانات وتصديرها هذه مع الأمر firebase emulators:exec أيضًا. لمزيد من المعلومات، يُرجى الرجوع إلى
مرجع أوامر المحاكي.
عرض نشاط "قواعد الأمان"
أثناء العمل على نماذج أولية وحلقات اختبار، يمكنك استخدام أدوات العرض والتقارير التي توفّرها Local Emulator Suite.
عرض عمليات تقييم "القواعد"
أثناء إضافة "قواعد الأمان" إلى النموذج الأولي، يمكنك تصحيح الأخطاء فيها باستخدام Local Emulator Suite أدوات.
بعد تشغيل مجموعة من الاختبارات، يمكنك الوصول إلى تقارير تغطية الاختبار التي توضّح كيفية تقييم كل قاعدة من قواعدك. للحصول على التقارير، استخدِم طلب بحث عن نقطة نهاية مكشوفة على المحاكي أثناء تشغيله. للحصول على إصدار مناسب للمتصفّح، استخدِم عنوان URL التالي:
http://localhost:9000/.inspect/coverage?ns=<database_name>
يقسِّم هذا العنوان قواعدك إلى تعابير وتعابير فرعية يمكنك تمرير مؤشر الماوس فوقها للحصول على مزيد من المعلومات، بما في ذلك عدد عمليات التنفيذ والقيم التي تم إرجاعها. للحصول على إصدار JSON الأولي من هذه البيانات، ضِّمن عنوان URL التالي في طلب البحث:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
ما هي الخطوة التالية؟
- للحصول على مجموعة منظَّمة من الفيديوهات والأمثلة التفصيلية حول كيفية إجراء ذلك، يُرجى الاطّلاع على قائمة تشغيل التدريب على محاكيات Firebase.
- يمكنك التحقيق في حالات الاستخدام المتقدّمة التي تتضمّن اختبار "قواعد الأمان" وFirebase Test SDK: اختبار "قواعد الأمان" (Realtime Database).
- بما أنّ الدوال المستندة إلى الأحداث هي عملية تكامل نموذجية مع Realtime Database، يمكنك الاطّلاع على مزيد من المعلومات عن محاكي Cloud Functions for Firebase في تشغيل الدوال محليًا.