قم بتوصيل تطبيقك إلى Realtime Database Emulator

قبل توصيل تطبيقك بمحاكي Realtime Database، تأكد من فهمك لسير العمل الشامل لـ Firebase Local Emulator Suite ، ومن تثبيت Local Emulator Suite وتكوينه ومراجعة أوامر CLI الخاصة به.

اختر مشروع Firebase

يحاكي Firebase Local Emulator Suite المنتجات لمشروع Firebase واحد.

لتحديد المشروع المراد استخدامه، قبل بدء تشغيل المحاكيات، قم بتشغيل firebase use في سطر الأوامر (CLI) في دليل العمل الخاص بك. أو يمكنك تمرير علامة --project إلى كل أمر محاكي.

يدعم Local Emulator Suite محاكاة مشاريع Firebase الحقيقية والمشاريع التجريبية .

نوع المشروع سمات استخدم مع المحاكيات
حقيقي

مشروع Firebase الحقيقي هو المشروع الذي قمت بإنشائه وتكوينه (على الأرجح عبر وحدة تحكم Firebase).

تحتوي المشاريع الحقيقية على موارد مباشرة، مثل مثيلات قاعدة البيانات أو مجموعات التخزين أو الوظائف أو أي مورد آخر قمت بإعداده لمشروع Firebase هذا.

عند العمل مع مشاريع Firebase حقيقية، يمكنك تشغيل برامج محاكاة لأي من المنتجات المدعومة أو جميعها.

بالنسبة لأي منتجات لا تقوم بمحاكاتها، ستتفاعل تطبيقاتك والتعليمات البرمجية الخاصة بك مع المورد المباشر (مثيل قاعدة البيانات، وحاوية التخزين، والوظيفة، وما إلى ذلك).

تجريبي

لا يحتوي مشروع Firebase التجريبي على تكوين Firebase حقيقي ولا توجد موارد مباشرة. عادةً ما يتم الوصول إلى هذه المشاريع عبر Codelabs أو البرامج التعليمية الأخرى.

معرفات المشروع للمشاريع التجريبية لها البادئة demo- .

عند العمل مع مشاريع Firebase التجريبية، تتفاعل تطبيقاتك ورموزك البرمجية مع المحاكيات فقط . إذا حاول تطبيقك التفاعل مع مورد لا يعمل عليه المحاكي، فسوف يفشل هذا الرمز.

ننصحك باستخدام المشاريع التجريبية حيثما أمكن ذلك. تشمل الفوائد ما يلي:

  • إعداد أسهل، حيث يمكنك تشغيل المحاكيات دون إنشاء مشروع Firebase
  • أمان أقوى، لأنه إذا استدعت التعليمات البرمجية الخاصة بك عن طريق الخطأ موارد غير مقلدة (إنتاجية)، فلن تكون هناك فرصة لتغيير البيانات والاستخدام والفوترة
  • دعم أفضل في وضع عدم الاتصال، نظرًا لعدم الحاجة إلى الوصول إلى الإنترنت لتنزيل تكوين SDK الخاص بك.

قم بتجهيز تطبيقك للتحدث مع المحاكيات

منصات Android وApple ومجموعات SDK للويب

قم بإعداد التكوين داخل التطبيق أو فئات الاختبار للتفاعل مع قاعدة بيانات Realtime على النحو التالي.

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);
سويفت
    // 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 modular API

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 namespaced API

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

ليست هناك حاجة إلى إعداد إضافي لاختبار وظائف السحابة التي يتم تشغيلها بواسطة أحداث قاعدة بيانات Realtime باستخدام المحاكي. عند تشغيل محاكيات Realtime Database وCloud Functions، فإنهما يعملان معًا تلقائيًا.

حزم SDK للمشرف

تتصل حزم SDK الخاصة بمسؤول Firebase تلقائيًا بمحاكي قاعدة بيانات Realtime عند تعيين متغير البيئة FIREBASE_DATABASE_EMULATOR_HOST :

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

إذا كان الكود الخاص بك يعمل داخل محاكي Cloud Functions، فسيتم تعيين معرف المشروع الخاص بك والتكوينات الأخرى تلقائيًا عند الاتصال ب initializeApp .

إذا كنت تريد أن يتصل كود Admin SDK الخاص بك بمحاكي مشترك يعمل في بيئة أخرى، فستحتاج إلى تحديد نفس معرف المشروع الذي قمت بتعيينه باستخدام Firebase CLI . يمكنك تمرير معرف مشروع initializeApp مباشرةً أو تعيين متغير البيئة GCLOUD_PROJECT .

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغيرات البيئة
export GCLOUD_PROJECT="your-project-id"

امسح قاعدة البيانات الخاصة بك بين الاختبارات

لمسح قاعدة بيانات الوقت الفعلي بين الأنشطة، يمكنك مسح مرجع قاعدة البيانات. يمكنك استخدام هذا الأسلوب كبديل لإيقاف عملية المحاكي ببساطة.

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);
سويفت
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web modular API

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 namespaced API

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

بطبيعة الحال، يجب أن تنتظر التعليمات البرمجية الخاصة بك التأكيد على انتهاء عملية التدفق أو فشلها باستخدام ميزات معالجة الأحداث غير المتزامنة في نظامك الأساسي.

بعد تنفيذ خطوة كهذه، يمكنك تسلسل اختباراتك وتشغيل وظائفك بثقة أنه سيتم إزالة البيانات القديمة بين عمليات التشغيل وأنك تستخدم تكوين اختبار أساسي جديد.

استيراد وتصدير البيانات

تتيح لك قاعدة البيانات والتخزين السحابي لمحاكيات 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>

ماذا بعد؟