Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

قبل ربط التطبيق إلى محاكي قاعدة البيانات في الوقت الحقيقي، تأكد من أنك تفهم العام المحاكي جناح Firebase المحلية سير العمل ، وأنك تركيب وتكوين والمحاكي جناح المحلية وإعادة النظر في الأوامر CLI .

اختر مشروع Firebase

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

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

المحاكي جناح محلي يدعم مضاهاة المشاريع Firebase حقيقية وعرض المشاريع.

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

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

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

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

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

تجريبي

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

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

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

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

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

صك تطبيقك للتحدث مع المحاكيات

تطبيقات Android و iOS و Web SDK

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

ذكري المظهر
        // 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);
iOS - سويفت
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

إصدار الويب 9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

إصدار الويب 8

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

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

SDKs للمشرف

المشرف تطوير البرامج Firebase الاتصال تلقائيا إلى محاكي قاعدة البيانات في الوقت الحقيقي عندما FIREBASE_DATABASE_EMULATOR_HOST تم تعيين متغير البيئة:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

إذا تم تشغيل التعليمات البرمجية داخل ظائف الغيمة منافس ID مشروعك وتكوين أخرى سيتم تعيين تلقائيا عند الاتصال initalizeApp .

عند الاتصال بمحاكي Realtime Database من أي بيئة أخرى ، ستحتاج إلى تحديد معرّف المشروع. يمكنك تمرير ID مشروع ل initializeApp مباشرة أو تعيين GCLOUD_PROJECT متغير البيئة. لاحظ أنك لست بحاجة إلى استخدام معرف مشروع Firebase الحقيقي ، سيقبل محاكي Realtime Database أي معرف مشروع:

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

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

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

ذكري المظهر
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
iOS - سويفت
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

إصدار الويب 9

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

إصدار الويب 8

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

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

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

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

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

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>

ماذا بعد؟