قبل ربط تطبيقك بمحاكي 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 وحِزم تطوير البرامج (SDK) للويب
يمكنك إعداد الإعدادات داخل التطبيق أو فئات الاختبار للتفاعل مع Realtime Database على النحو التالي.
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 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); }
ليس عليك إجراء أي إعدادات إضافية لاختبار وظائف Cloud التي يتم تشغيلها من خلال أحداث قاعدة بيانات Realtime باستخدام المحاكي. عند تفعيل محاكيَي Realtime Database وCloud Functions، يعملان معًا تلقائيًا.
Admin SDK ثانية
تتصل تطبيقات 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+KTX
// 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.
- استكشِف حالات الاستخدام المتقدّمة التي تتضمّن اختبار قواعد الأمان وحزمة تطوير البرامج (SDK) لاختبار Firebase: اختبار قواعد الأمان (قاعدة بيانات Firebase الآنية الاستجابة).
- بما أنّ الدوالّ المشغَّلة هي عملية دمج نموذجية مع Realtime Database، يمكنك الاطّلاع على مزيد من المعلومات عن محاكي Cloud Functions for Firebase على الرابط تشغيل الدوالّ محليًا.