ربط تطبيقك بمحاكي قاعدة البيانات في الوقت الفعلي

قبل ربط تطبيقك بمحاكي 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 و لا على أي موارد نشطة. يمكن الوصول إلى هذه المشاريع عادةً من خلال المختبرات البرمجية أو البرامج التعليمية الأخرى.

تحتوي معرّفات المشاريع التوضيحية على البادئة demo-.

عند العمل مع مشاريع 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>

ما هي الخطوة التالية؟