يشتمل واجهة سطر الأوامر في Firebase على محاكي Cloud Functions الذي يمكنه محاكاة أنواع الدوال التالية:
- دوال HTTPS
- الدوال القابلة للاستدعاء
- تؤدي وظائف الخلفية التي تم تشغيلها من خلال مصادقة Firebase وقاعدة بيانات الوقت الفعلي Cloud Firestore وCloud Storage وCloud Pub/Sub.
يمكنك تشغيل الدوال على جهازك لاختبارها قبل نشرها في قناة الإصدار العلني.
تثبيت واجهة سطر الأوامر في Firebase
لاستخدام محاكي Cloud Functions، عليك أولاً تثبيت واجهة سطر الأوامر في Firebase باتّباع الخطوات التالية:
npm install -g firebase-tools
لاستخدام المحاكي المحلي، يجب أن تعتمد وظائف السحابة الإلكترونية على ما يلي:
firebase-admin
الإصدار8.0.0
أو أحدث.firebase-functions
الإصدار3.0.0
أو أحدث.
إعداد بيانات اعتماد المشرف (اختياري)
إذا كنت تريد تفاعل اختبارات الدوال مع Google APIs أو منصة Firebase الأخرى واجهات برمجة التطبيقات عبر SDK لمشرف Firebase، قد تحتاج إلى إعداد بيانات اعتماد المشرف.
- سبق أن تمت إضافة بيانات اعتماد كافية ولا تتطلب مشغِّلات Cloud Firestore و"قاعدة بيانات الوقت الفعلي" عملية إعداد إضافية.
- تتطلب جميع واجهات برمجة التطبيقات الأخرى، بما في ذلك واجهات برمجة تطبيقات Firebase، مثل المصادقة و"المراسلة عبر السحابة الإلكترونية من Firebase" أو Google APIs، مثل Cloud Translation أو Cloud Speech، اتّباع خطوات الإعداد الموضَّحة في هذا القسم. ينطبق ذلك سواء كنت تستخدم واجهة الأوامر في Cloud Functions أو
firebase emulators:start
.
لإعداد بيانات اعتماد المشرف للدوال التي تتم محاكاتها:
- افتح جزء حسابات الخدمة في وحدة تحكم Google Cloud.
- تأكد من تحديد حساب خدمة App Engine التلقائي واستخدمه قائمة الخيارات على يسار الشاشة لاختيار إنشاء مفتاح.
- اختَر JSON لنوع المفتاح وانقر على إنشاء عندما يُطلب منك ذلك.
اضبط بيانات اعتماد Google التلقائية للتوجيه إلى المفتاح الذي تم تنزيله:
نظام التشغيل Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
بعد الانتهاء من هذه الخطوات، يمكن لاختبارات الوظائف الوصول إلى Firebase
واجهات Google APIs باستخدام SDK للمشرف. على سبيل المثال، عند إجراء اختبار
مشغل مصادقة، يمكن للدالة التي تتم محاكاتها استدعاء
admin.auth().getUserByEmail(email)
إعداد ضبط الوظائف (اختياري)
إذا كنت تستخدم متغيرات ضبط الدوال المخصصة، شغِّل أولاً
للحصول على الإعدادات المخصّصة (عليك تنفيذ هذا الأمر في دليل functions
)
في بيئتك المحلية:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
تشغيل مجموعة المحاكي
لتشغيل محاكي دوال السحابة، استخدِم الأمر emulators:start
:
firebase emulators:start
سيبدأ الأمر emulators:start
في تشغيل أدوات محاكاة وظائف السحابة الإلكترونية،
Cloud Firestore وRealtime Database وFirebase Hosting حسب المنتجات
الذي أعددته في مشروعك المحلي باستخدام firebase init
إذا أردت
لبدء محاكي معيّن، استخدِم العلامة --only
:
firebase emulators:start --only functions
إذا كنت ترغب في تشغيل مجموعة اختبار أو نص برمجي للاختبار بعد انتهاء أدوات المحاكاة
بدأت، استخدم الأمر emulators:exec
:
firebase emulators:exec "./my-test.sh"
استخدِم تطبيقك للتواصل مع المحاكيات
قد يتعين عليك تنفيذ إجراءات لتعزيز تفاعل تطبيقك مع المحاكيات بعض الإعدادات الإضافية.
ضبط تطبيقك للدوال القابلة للاستعانة بها
إذا كان النموذج الأوّلي وأنشطة الاختبار تتضمّن دوال خلفية قابلة للاستدعاء، يمكنك ضبط التفاعل مع محاكي Cloud Functions for Firebase على النحو التالي:
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 functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
ضبط تطبيقك على أدوات محاكاة دوال HTTPS
سيتم عرض كل دالة HTTPS في الرمز البرمجي الخاص بك من المحاكي المحلي باستخدام تنسيق عنوان URL التالي:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
على سبيل المثال، سيتم عرض دالة helloWorld
بسيطة ذات منفذ المضيف والمنطقة التلقائيين على:
https://localhost:5001/$PROJECT/us-central1/helloWorld
خصِّص تطبيقك لمحاكاة الدوال التي يتم تشغيلها في الخلفية.
يدعم محاكي دوال السحابة الإلكترونية الدوال التي يتم تشغيلها في الخلفية من المصادر التالية:
- محاكي قاعدة البيانات في الوقت الفعلي
- محاكي Cloud Firestore
- محاكي المصادقة
- محاكي نشر/اشتراك
لبدء أحداث في الخلفية، عليك تعديل موارد الواجهة الخلفية باستخدام واجهة مستخدم مجموعة المحاكيات، أو من خلال ربط تطبيقك أو اختبار الرمز بالمحاكيات باستخدام SDK لنظامك الأساسي.
معالِجات اختبار الأحداث المخصّصة الصادرة عن الإضافات
بالنسبة إلى الوظائف التي تنفِّذها للتعامل مع الأحداث المخصّصة في إضافات Firebase في الإصدار 2 من Cloud Functions، سيتم إقران محاكي Cloud Functions يتوافق محاكي Eventarc مع مشغِّلات Eventarc.
لاختبار معالِجات الأحداث المخصّصة للإضافات التي تُصدر أحداثًا، عليك تثبيت وظائف السحابة الإلكترونية ومحاكيات Eventarc.
تضبط بيئة تشغيل Cloud Functions بيئة EVENTARC_EMULATOR
.
إلى localhost:9299
في العملية الحالية إذا كان محاكي Eventarc
قيد التشغيل. تتصل حزم تطوير البرامج (SDK) لمشرف Firebase تلقائيًا بـ Eventarc
عند ضبط متغيّر بيئة EVENTARC_EMULATOR
. يمكنك
عدِّل المنفذ التلقائي كما هو موضَّح ضمن إعداد مجموعة أدوات المحاكاة المحلية.
عندما يتم ضبط متغيرات البيئة بشكل صحيح، تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase يرسل الأحداث تلقائيًا إلى محاكي Eventarc. في المقابل، أطلقت منصة Eventarc يعيد المحاكي الاتصال لمحاكي دوال السحابة لتشغيل أي المعالِجات المسجّلة.
يمكنك الاطّلاع على سجلات "الدوال" في واجهة مستخدم Emulator Suite للحصول على تفاصيل عن تنفيذ المعالج.
التفاعلات مع الخدمات الأخرى
تشتمل حزمة المحاكي على أدوات محاكاة متعددة تتيح لاختبار التفاعلات عبر المنتجات.
Cloud Firestore
إذا كانت لديك وظائف تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase من أجل الكتابة في Cloud Firestore، سيتم إرسال عمليات الكتابة هذه إلى محاكي Cloud Firestore. إذا كان قيد التشغيل. إذا تم تشغيل المزيد من الدوال بواسطة تلك الكتابة، سيتم تشغيلها في محاكي Cloud Functions.
Cloud Storage
إذا كانت لديك وظائف تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase (الإصدار 9.7.0 أو إصدار أحدث) على كل البيانات التي تكتبها إلى Cloud Storage، سيتم إرسالها إلى محاكي Cloud Storage. إذا كان قيد التشغيل. إذا تم تشغيل المزيد من الدوال بواسطة تلك الكتابة، سيتم تشغيلها في محاكي Cloud Functions.
مصادقة Firebase
إذا كانت لديك وظائف تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase (الإصدار 9.3.0 أو إصدار أحدث) إلى مصادقة Firebase، فسيتم إرسال عمليات الكتابة هذه إلى محاكي المصادقة إذا كان قيد التشغيل. إذا تم تشغيل المزيد من الدوال بواسطة تلك الكتابة، سيتم تشغيلها في محاكي Cloud Functions.
استضافة Firebase
إذا كنت تستخدم دوال Cloud من أجل إنشاء محتوى ديناميكي
استضافة Firebase، firebase emulators:start
يستخدم دوال HTTP المحلية كخوادم وكيل للاستضافة.
التسجيل
ويبث المحاكي السجلات من الدوال إلى النافذة الطرفية، حيث
run. وهي تعرض جميع النتائج من console.log()
وconsole.info()
وconsole.error()
وconsole.warn()
في الدوال.
الخطوات التالية
للاطّلاع على مثال كامل على استخدام مجموعة مُحاكي Firebase، راجع اختبار عيّنة Quickstart.