قبل ربط تطبيقك بمحاكي Realtime Database، تأكَّد من أنّك تفهم سير عمل Firebase Local Emulator Suite بشكل عام، ومن أنّك تثبّت Local Emulator Suite وتضبط إعداداته وتراجع أوامر واجهة سطر الأوامر.
اختيار مشروع على Firebase
يحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.
لاختيار المشروع الذي تريد استخدامه، نفِّذ الأمر
firebase use
في دليل العمل قبل بدء المحاكيات. أو يمكنك تمرير العلامة --project
إلى كل أمر من أوامر المحاكي.
تتيح Local Emulator Suite محاكاة مشاريع Firebase الحقيقية ومشاريع العرض التوضيحي.
نوع المشروع | الميزات | الاستخدام مع المحاكيات |
---|---|---|
Real |
مشروع 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); }
لا يلزم إجراء أي إعداد إضافي لاختبار Cloud Functions التي يتم تشغيلها من خلال أحداث Realtime Database باستخدام المحاكي. عند تشغيل محاكيَي Realtime Database وCloud Functions معًا، سيعملان معًا تلقائيًا.
Admin SDK ثانية
تتصل Firebase Admin SDKs تلقائيًا بمحاكي 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
.
Node.js Admin SDK
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 في تشغيل الدوال محليًا.