يشتمل Firebase CLI على محاكي Cloud Functions الذي يمكنه محاكاة أنواع الوظائف التالية:
- وظائف HTTPS
- وظائف قابلة للاستدعاء
- تم تشغيل وظائف الخلفية من مصادقة Firebase و Realtime Database و Cloud Firestore والتخزين السحابي و Cloud Pub / Sub.
يمكنك تشغيل الوظائف محليًا لاختبارها قبل نشرها في الإنتاج.
قم بتثبيت Firebase CLI
لاستخدام محاكي Cloud Functions ، قم أولاً بتثبيت Firebase CLI:
npm install -g firebase-tools
من أجل استخدام المحاكي المحلي ، يجب أن تعتمد وظائف السحابة الخاصة بك على:
- إصدار
firebase-admin
8.0.0
أو أعلى. - الإصدار
3.0.0
أو أعلىfirebase-functions
.
إعداد بيانات اعتماد المسؤول (اختياري)
إذا كنت تريد أن تتفاعل اختبارات الوظائف مع Google APIs أو واجهات Firebase API الأخرى عبر Firebase Admin SDK ، فقد تحتاج إلى إعداد بيانات اعتماد المشرف.
- تمتلك مشغلات Cloud Firestore و Realtime Database بالفعل بيانات اعتماد كافية ، ولا تتطلب إعدادًا إضافيًا.
- تتطلب جميع واجهات برمجة التطبيقات الأخرى ، بما في ذلك واجهات Firebase API مثل المصادقة و FCM أو واجهات برمجة تطبيقات Google مثل Cloud Translation أو Cloud Speech ، خطوات الإعداد الموضحة في هذا القسم. ينطبق هذا سواء كنت تستخدم واجهة Cloud Functions أو
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
command:
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"
صك تطبيقك للتحدث مع المحاكيات
لأداة تطبيقك للتفاعل مع المحاكيات ، قد تحتاج إلى إجراء بعض التهيئة الإضافية.
صك تطبيقك للوظائف القابلة للاستدعاء
إذا كانت أنشطة النموذج الأولي والاختبار تتضمن وظائف خلفية قابلة للاستدعاء ، فقم بتكوين التفاعل مع وظائف السحابة لمحاكي 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().useEmulator(withHost: "localhost", port: 5001)
Web modular API
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web namespaced API
firebase.functions().useEmulator("localhost", 5001);
صك تطبيقك لمحاكاة وظائف HTTPS
سيتم تقديم كل وظيفة HTTPS في التعليمات البرمجية الخاصة بك من المحاكي المحلي باستخدام تنسيق عنوان URL التالي:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
على سبيل المثال ، سيتم تقديم وظيفة helloWorld
بسيطة مع منفذ المضيف الافتراضي والمنطقة على:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
صك تطبيقك لمضاهاة الوظائف التي يتم تشغيلها في الخلفية
يدعم محاكي وظائف السحابة الوظائف التي يتم تشغيلها في الخلفية من المصادر التالية:
- محاكي Realtime Database
- محاكي Cloud Firestore
- محاكي المصادقة
- محاكي Pub / Sub
لتشغيل أحداث الخلفية ، قم بتعديل الموارد الخلفية باستخدام Emulator Suite UI ، أو عن طريق توصيل تطبيقك أو رمز الاختبار بالمحاكيات باستخدام SDK للنظام الأساسي الخاص بك.
معالجات الاختبار للأحداث المخصصة المنبعثة من الإضافات
بالنسبة للوظائف التي تنفذها للتعامل مع أحداث Firebase Extensions المخصصة باستخدام Cloud Functions v2 ، فإن محاكي Cloud Functions أزواج مع محاكي Eventarc لدعم مشغلات Eventarc .
لاختبار معالجات الأحداث المخصصة للامتدادات التي تصدر الأحداث ، يجب عليك تثبيت وظائف Cloud ومحاكيات Eventarc.
يعيّن وقت تشغيل وظائف السحابة EVENTARC_EMULATOR
متغير البيئة إلى localhost:9299
في العملية الحالية إذا كان محاكي Eventarc قيد التشغيل. تتصل مجموعات Firebase Admin SDK تلقائيًا بمحاكي Eventarc عند تعيين متغير البيئة EVENTARC_EMULATOR
. يمكنك تعديل المنفذ الافتراضي كما تمت مناقشته ضمن تكوين مجموعة المحاكي المحلي .
عندما يتم تكوين متغيرات البيئة بشكل صحيح ، يرسل Firebase Admin SDK الأحداث تلقائيًا إلى محاكي Eventarc. بدوره ، يقوم محاكي Eventarc بإعادة الاتصال بمحاكي وظائف السحابة لتشغيل أي معالجات مسجلة.
يمكنك التحقق من سجلات الوظائف في Emulator Suite UI للحصول على تفاصيل حول تنفيذ المعالج.
التفاعلات مع الخدمات الأخرى
تتضمن مجموعة المحاكي العديد من المحاكيات ، والتي تتيح اختبار التفاعلات بين المنتجات.
سحابة Firestore
إذا كانت لديك وظائف تستخدم 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
إذا كنت تستخدم وظائف السحابة لإنشاء محتوى ديناميكي لاستضافة Firebase ، firebase emulators:start
وظائف HTTP المحلية كوكلاء للاستضافة.
تسجيل
يقوم المحاكي بتدفق السجلات من وظائفك إلى نافذة المحطة حيث يتم تشغيلها. يعرض كل مخرجات من console.log()
و console.info()
و console.error()
و console.warn()
داخل وظائفك.
الخطوات التالية
للحصول على مثال كامل لاستخدام مجموعة محاكي Firebase ، راجع نموذج اختبار البدء السريع .