استخدام "محاكي الإضافات" لتقييم الإضافات

قبل استخدام محاكي Extensions مع تطبيقك، تأكَّد من فهم سير عمل Firebase Local Emulator Suite بشكل عام، ومن تثبيت Local Emulator Suite وضبطه ومراجعة أوامر سطر الأوامر.

يفترض هذا الدليل أيضًا أنّك على دراية Firebase Extensions وكيفية استخدامها في تطبيقات Firebase.

ما الذي يمكنني فعله باستخدام محاكي Extensions؟

باستخدام محاكي Extensions، يمكنك تثبيت الإضافات وإدارتها في بيئة محلية آمنة وفهم قدراتها بشكل أفضل مع تقليل تكاليف الفوترة. يشغِّل المحاكي وظائف الإضافة محليًا، بما في ذلك الوظائف التي يتم تشغيلها في الخلفية استجابةً للأحداث باستخدام محاكيات Cloud Firestore وRealtime Database وCloud Storage for Firebase وAuthentication و Pub/Sub، والوظائف التي يتم تشغيلها استجابةً لأحداث Eventarc والتي تم تنفيذها في Cloud Functions الإصدار 2.

اختيار مشروع على Firebase

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

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

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

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

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

تحتوي المشاريع الحقيقية على موارد نشطة، مثل نُسخ قاعدة البيانات أو حِزم التخزين أو الدوالّ أو أيّ مورد آخر أعددته لهذا المشروع على Firebase.

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

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

تجريبي

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

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

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

ننصحك باستخدام المشاريع التجريبية كلما أمكن. تتضمّن المزايا ما يلي:

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

تثبيت إضافة وتقييمها

إنّ استخدام محاكي Extensions لتقييم ما إذا كانت إحدى الإضافات تلبي احتياجاتك أمر سهل.

لنفترض أنّك مهتم بإضافة "الرسالة الإلكترونية المشغِّلة" (firestore-send-email)، مع أنّ سير العمل التالي يتناول أي إضافة. عند التشغيل باستخدام المحاكيات المحلية، ستستخدِم ميزة "البريد الإلكتروني المشغِّل" تلقائيًا محاكيَي Cloud Firestore و Cloud Functions.

لتقييم إضافة محليًا:

  1. أضِف الإضافة إلى بيان الإضافات المحلية. بيان الإضافات هو قائمة بمثيلات الإضافات وإعداداتها.

    firebase ext:install --local firebase/firestore-send-email

    سيطلب منك تنفيذ الأمر أعلاه ضبط أحدث إصدار من إضافة firebase/firestore-send-email وحفظ الإعدادات في البيان، ولكن لن يتم نشر الإعدادات في مشروعك. لمزيد من المعلومات حول هذا الموضوع، يُرجى الاطّلاع على مقالة إدارة إعدادات الإضافات باستخدام ملفات البيان.

  2. ابدأ Local Emulator Suite كالمعتاد.

    firebase emulators:start

الآن، باستخدام مثيل إضافة firestore-send-email المدرَج في ملف البيان، سينزِّل Local Emulator Suite رمز المصدر الخاص بهذه الإضافة إلى ~/.cache/firebase/extensions. بعد تنزيل المصادر، سيبدأ Local Emulator Suite وستتمكّن من بدء أي من وظائف الإضافة التي يتم تشغيلها في الخلفية وربط تطبيقك بـ Local Emulator Suite لاختبار دمجها مع تطبيقك.

يمكنك استخدام Emulator Suite UI لإضافة بيانات إلى مجموعة مستندات الرسائل الإلكترونية وإعداد موارد خلفية أخرى، على النحو المطلوب من خلال إضافة "الرسالة الإلكترونية المشغِّلة".

بدلاً من ذلك، في بيئات الاختبار غير التفاعلي، مثل سير عمل دمج المستمر، يمكنك كتابة نص اختبار لتقييم الإضافة التي تملأ بيانات Cloud Firestore اللازمة وتشغّل الدوالّ، من بين خطوات أخرى. بعد ذلك، يمكنك استدعاء Local Emulator Suite لتنفيذ نص الاختبار:

firebase emulators:exec my-test.sh

أوجه الاختلاف بين الاختبار باستخدام محاكي Extensions والاختبار في قناة الإصدار العلني

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

Cloud IAM

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

قيود على نوع التنشيط

لا يتيح Firebase Local Emulator Suite حاليًا سوى الدوال التي يتم تنشيطها من خلال طلبات HTTP، وعوامل تشغيل الأحداث المخصّصة في Eventarc للإضافات، والدوال التي يتم تنشيطها من خلال الأحداث في الخلفية لـ Cloud Firestore وRealtime Database Cloud Storage for Firebase وAuthentication وPub/Sub. لتقييم الإضافات التي تستخدِم أنواعًا أخرى من الدوالّ المشغَّلة، عليك تثبيت الإضافة في مشروع اختبار على Firebase.

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