تشغيل الوظائف محليا

يتضمن 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 .

لإعداد بيانات اعتماد المسؤول للوظائف التي تمت مضاهاتها:

  1. افتح جزء حسابات الخدمة في Google Cloud Console.
  2. تأكد من تحديد حساب خدمة App Engine الافتراضي ، واستخدم قائمة الخيارات الموجودة على اليمين لتحديد إنشاء مفتاح .
  3. عند المطالبة ، حدد JSON لنوع المفتاح ، وانقر فوق إنشاء .
  4. قم بتعيين بيانات اعتماد 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 ، راجع نموذج اختبار البدء السريع .