يتضمن Firebase CLI محاكي Cloud Functions الذي يمكنه محاكاة أنواع الوظائف التالية:
- وظائف HTTPS
- وظائف قابلة للاستدعاء
- وظائف الخلفية التي يتم تشغيلها من مصادقة Firebase، وقاعدة بيانات Realtime، وCloud Firestore، وCloud Storage، وCloud Pub/Sub.
يمكنك تشغيل الوظائف محليًا لاختبارها قبل نشرها في الإنتاج.
قم بتثبيت Firebase CLI
لاستخدام محاكي Cloud Functions، قم أولاً بتثبيت Firebase CLI:
npm install -g firebase-tools
لاستخدام المحاكي المحلي، يجب أن تعتمد وظائف السحابة لديك على:
-
firebase-admin
الإصدار8.0.0
أو أعلى. -
firebase-functions
الإصدار3.0.0
أو أعلى.
إعداد بيانات اعتماد المسؤول (اختياري)
إذا كنت تريد أن تتفاعل اختبارات وظائفك مع واجهات برمجة تطبيقات Google أو واجهات برمجة تطبيقات Firebase الأخرى عبر Firebase Admin SDK ، فقد تحتاج إلى إعداد بيانات اعتماد المسؤول.
- تحتوي مشغلات Cloud Firestore وRealtime Database بالفعل على بيانات اعتماد كافية، ولا تتطلب إعدادًا إضافيًا.
- تتطلب جميع واجهات برمجة التطبيقات الأخرى، بما في ذلك واجهات برمجة تطبيقات Firebase مثل Authentication وFCM أو واجهات برمجة تطبيقات Google مثل Cloud Translation أو Cloud Speech، خطوات الإعداد الموضحة في هذا القسم. ينطبق هذا سواء كنت تستخدم Cloud Functions Shell أو
firebase emulators:start
.
لإعداد بيانات اعتماد المسؤول للوظائف التي تمت محاكاتها:
- افتح جزء حسابات الخدمة في Google Cloud Console.
- تأكد من تحديد حساب الخدمة الافتراضي لـ App Engine ، واستخدم قائمة الخيارات الموجودة على اليمين لتحديد إنشاء مفتاح .
- عندما يُطلب منك ذلك، حدد JSON لنوع المفتاح، ثم انقر فوق "إنشاء" .
قم بتعيين بيانات اعتماد Google الافتراضية الخاصة بك للإشارة إلى المفتاح الذي تم تنزيله:
يونكس
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
شبابيك
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
بعد إكمال هذه الخطوات، يمكن لاختبارات الوظائف الخاصة بك الوصول إلى Firebase وGoogle APIs باستخدام Admin 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
قم بتشغيل مجموعة المحاكي
لتشغيل محاكي Cloud Functions، استخدم أمر emulators:start
:
firebase emulators:start
emulators:start
بدء تشغيل محاكيات Cloud Functions وCloud Firestore وRealtime Database وFirebase Hosting استنادًا إلى المنتجات التي قمت بتهيئتها في مشروعك المحلي باستخدام firebase init
. إذا كنت تريد بدء تشغيل محاكي معين، فاستخدم العلامة --only
:
firebase emulators:start --only functions
إذا كنت تريد تشغيل مجموعة اختبار أو برنامج نصي للاختبار بعد بدء المحاكيات، فاستخدم الأمر emulators:exec
:
firebase emulators:exec "./my-test.sh"
قم بتجهيز تطبيقك للتحدث مع المحاكيات
لتجهيز تطبيقك للتفاعل مع المحاكيات، قد تحتاج إلى إجراء بعض التكوينات الإضافية.
قم بتجهيز تطبيقك للوظائف القابلة للاستدعاء
إذا كانت أنشطة النموذج الأولي والاختبار الخاصة بك تتضمن وظائف خلفية قابلة للاستدعاء ، فقم بتكوين التفاعل مع Cloud Functions لمحاكي 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);
سويفت
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web modular API
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web namespaced API
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 Functions الوظائف التي يتم تشغيلها في الخلفية من المصادر التالية:
- محاكي قاعدة البيانات في الوقت الحقيقي
- محاكي Cloud Firestore
- محاكي المصادقة
- محاكي الحانة/الفرعية
لتشغيل أحداث الخلفية، قم بتعديل الموارد الخلفية باستخدام Emulator Suite UI، أو عن طريق توصيل تطبيقك أو رمز الاختبار بالمحاكيات باستخدام SDK لنظامك الأساسي.
معالجات الاختبار للأحداث المخصصة الصادرة عن الامتدادات
بالنسبة للوظائف التي تنفذها للتعامل مع أحداث Firebase Extensions المخصصة باستخدام Cloud Functions v2، يقترن محاكي Cloud Functions مع محاكي Eventarc لدعم مشغلات Eventarc .
لاختبار معالجات الأحداث المخصصة للملحقات التي تبث الأحداث، يجب عليك تثبيت محاكيات Cloud Functions وEventarc.
يقوم وقت تشغيل Cloud Functions بتعيين متغير البيئة EVENTARC_EMULATOR
على localhost:9299
في العملية الحالية إذا كان محاكي Eventarc قيد التشغيل. تتصل حزم SDK الخاصة بإدارة Firebase تلقائيًا بمحاكي Eventarc عند تعيين متغير البيئة EVENTARC_EMULATOR
. يمكنك تعديل المنفذ الافتراضي كما تمت مناقشته ضمن تكوين Local Emulator Suite .
عندما يتم تكوين متغيرات البيئة بشكل صحيح، ترسل Firebase Admin SDK الأحداث تلقائيًا إلى محاكي Eventarc. وفي المقابل، يقوم محاكي Eventarc بالاتصال مرة أخرى بمحاكي Cloud Functions لتشغيل أي معالجات مسجلة.
يمكنك التحقق من سجلات الوظائف في Emulator Suite UI للحصول على تفاصيل حول تنفيذ المعالج.
التفاعلات مع الخدمات الأخرى
تتضمن مجموعة المحاكي العديد من المحاكيات، والتي تتيح اختبار التفاعلات بين المنتجات.
سحابة فايرستور
إذا كانت لديك وظائف تستخدم Firebase Admin SDK للكتابة إلى Cloud Firestore، فسيتم إرسال عمليات الكتابة هذه إلى محاكي Cloud Firestore إذا كان قيد التشغيل. إذا تم تشغيل وظائف أخرى من خلال تلك الكتابة، فسيتم تشغيلها في محاكي Cloud Functions.
سحابة التخزين
إذا كانت لديك وظائف تستخدم Firebase Admin SDK (الإصدار 9.7.0 أو أحدث) للكتابة إلى Cloud Storage، فسيتم إرسال عمليات الكتابة هذه إلى محاكي Cloud Storage إذا كان قيد التشغيل. إذا تم تشغيل وظائف أخرى من خلال تلك الكتابة، فسيتم تشغيلها في محاكي Cloud Functions.
مصادقة Firebase
إذا كانت لديك وظائف تستخدم Firebase Admin SDK (الإصدار 9.3.0 أو أحدث) للكتابة إلى Firebase Authentication، فسيتم إرسال عمليات الكتابة هذه إلى محاكي Auth إذا كان قيد التشغيل. إذا تم تشغيل وظائف أخرى من خلال تلك الكتابة، فسيتم تشغيلها في محاكي Cloud Functions.
استضافة Firebase
إذا كنت تستخدم Cloud Functions لإنشاء محتوى ديناميكي لاستضافة Firebase ، firebase emulators:start
تستخدم وظائف HTTP المحلية كوكلاء للاستضافة.
تسجيل
يقوم المحاكي بتدفق السجلات من وظائفك إلى النافذة الطرفية حيث يتم تشغيلها. يعرض كل المخرجات من console.log()
و console.info()
و console.error()
و console.warn()
داخل وظائفك.
الخطوات التالية
للحصول على مثال كامل لاستخدام مجموعة محاكيات Firebase، راجع نموذج التشغيل السريع للاختبار .