قبل ربط تطبيقك بمحاكي 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")
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); }
لا يلزم إجراء أي إعداد إضافي لاختبار "الوظائف السحابية" التي يتم تشغيلها بواسطة أحداث قاعدة بيانات الوقت الفعلي باستخدام المحاكي. عند تشغيل كل من محاكي قاعدة بيانات الوقت الفعلي ومحاكي "الوظائف السحابية"، سيعملان معًا تلقائيًا.
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 CLI.
يمكنك تمرير رقم تعريف مشروع إلى 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، يمكنك الاطّلاع على مزيد من المعلومات عن محاكي Cloud Functions for Firebase في مقالة تشغيل الدوال محليًا.