يتضمن 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
Firebase.
إعداد بيانات اعتماد المسؤول (اختياري)
إذا كنت تريد أن تتفاعل اختبارات الوظائف مع 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 مثل هذا:
ذكري المظهر
// 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://localhost:5001")
Web version 9
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web version 8
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
لتشغيل أحداث الخلفية ، قم بتوصيل تطبيقك أو رمز الاختبار بالمحاكيات باستخدام SDK لمنصتك.
التفاعلات مع الخدمات الأخرى
تشتمل مجموعة المحاكي على العديد من المحاكيات ، والتي تتيح اختبار التفاعلات بين المنتجات.
سحابة 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 ، راجع نموذج اختبار البدء السريع .