تشغيل الدوال على الجهاز

يشتمل واجهة سطر الأوامر في 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 الأخرى من خلال حزمة تطوير البرامج لمشرفي Firebase، قد تحتاج إلى إعداد بيانات اعتماد المشرف.

  • سبق أن تمت إضافة بيانات اعتماد كافية ولا تتطلب مشغِّلات Cloud Firestore و"قاعدة بيانات الوقت الفعلي" عملية إعداد إضافية.
  • تتطلب جميع واجهات برمجة التطبيقات الأخرى، بما في ذلك واجهات برمجة تطبيقات Firebase، مثل المصادقة و"المراسلة عبر السحابة الإلكترونية من Firebase" أو Google APIs، مثل Cloud Translation أو Cloud Speech، اتّباع خطوات الإعداد الموضَّحة في هذا القسم. ينطبق ذلك سواء كنت تستخدم واجهة الأوامر في Cloud Functions أو firebase emulators:start.

لإعداد بيانات اعتماد المشرف للدوال التي تتم محاكاتها:

  1. افتح جزء حسابات الخدمة في وحدة التحكّم في Google Cloud.
  2. تأكَّد من اختيار حساب خدمة App Engine التلقائي واستخدِم قائمة الخيارات على يسار الشاشة لاختيار إنشاء مفتاح.
  3. اختَر JSON لنوع المفتاح وانقر على إنشاء عندما يُطلب منك ذلك.
  4. اضبط بيانات اعتماد Google التلقائية للتوجيه إلى المفتاح الذي تم تنزيله:

    نظام التشغيل Unix

    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 باستخدام 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 Functions وCloud Firestore و"قاعدة بيانات الوقت الفعلي" و"استضافة Firebase" استنادًا إلى المنتجات التي أعددتها في مشروعك المحلي باستخدام "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
  • محاكي المصادقة
  • محاكي نشر/اشتراك

لبدء الأحداث في الخلفية، عليك تعديل موارد الواجهة الخلفية باستخدام واجهة مستخدم Emulator Suite أو من خلال ربط تطبيقك أو اختبار الرمز ببرامج المحاكاة باستخدام حزمة تطوير البرامج (SDK) لنظامك الأساسي.

معالِجات اختبار الأحداث المخصّصة الصادرة عن الإضافات

بالنسبة إلى الوظائف التي تنفِّذها للتعامل مع الأحداث المخصَّصة في "إضافات Firebase" باستخدام الإصدار 2 من Cloud Functions، يمكن إقران محاكي Cloud Functions مع محاكي Eventarc لإتاحة مشغّلات Eventarc.

لاختبار معالِجات الأحداث المخصّصة للإضافات التي تُصدر الأحداث، عليك تثبيت مُحاكيات Cloud Functions وEventarc.

يضبط وقت تشغيل Cloud Functions متغيّر بيئة EVENTARC_EMULATOR على localhost:9299 في العملية الحالية إذا كان محاكي Eventarc قيد التشغيل. تتصل حِزم SDK لمشرفي Firebase تلقائيًا بمحاكي Eventarc عند ضبط متغيّر بيئة EVENTARC_EMULATOR. يمكنك تعديل المنفذ التلقائي كما هو موضّح ضمن إعداد مجموعة أدوات المحاكاة المحلية.

عندما يتم ضبط متغيرات البيئة بشكلٍ صحيح، ترسل حزمة تطوير البرامج (SDK) لمشرف Firebase الأحداث تلقائيًا إلى محاكي Eventarc. وفي المقابل، يعيد محاكي Eventarc استدعاء محاكي Cloud Functions لتفعيل أي معالِجات مسجّلة.

يمكنك الاطّلاع على سجلات "الدوال" في واجهة مستخدم Emulator Suite للحصول على تفاصيل حول تنفيذ المعالج.

التفاعلات مع الخدمات الأخرى

تشتمل حزمة المحاكي على العديد من أدوات المحاكاة التي تتيح اختبار التفاعلات بين المنتجات.

Cloud Firestore

إذا كانت لديك وظائف تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase للكتابة في Cloud Firestore، سيتم إرسال عمليات الكتابة هذه إلى محاكي Cloud Firestore إذا كان قيد التشغيل. وفي حال تفعيل المزيد من الدوال، سيتم تنفيذها في محاكي دوال السحابة.

Cloud Storage

إذا كانت لديك وظائف تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase (الإصدار 9.7.0 أو إصدار أحدث) للكتابة في Cloud Storage، سيتم إرسال عمليات الكتابة هذه إلى محاكي Cloud Storage إذا كان قيد التشغيل. وفي حال تفعيل المزيد من الدوال، سيتم تنفيذها في محاكي دوال السحابة.

مصادقة Firebase

إذا كانت لديك وظائف تستخدم حزمة تطوير البرامج (SDK) لمشرف Firebase (الإصدار 9.3.0 أو إصدار أحدث) للكتابة في مصادقة Firebase، سيتم إرسال عمليات الكتابة هذه إلى محاكي المصادقة إذا كان قيد التشغيل. وفي حال تفعيل المزيد من الدوال، سيتم تنفيذها في محاكي دوال السحابة.

استضافة Firebase

إذا كنت تستخدم دوال Cloud من أجل إنشاء محتوى ديناميكي للاستضافة على Firebase، يستخدم firebase emulators:start وظائف HTTP المحلية كخوادم وكيلة للاستضافة.

التسجيل

ويبث المحاكي السجلات من الدوال إلى النافذة الطرفية التي يتم تشغيلها فيها. وهي تعرض جميع النتائج من العبارات console.log() وconsole.info() وconsole.error() وconsole.warn() داخل الدوال.

الخطوات التالية

للاطّلاع على مثال كامل لاستخدام مجموعة محاكي Firebase، يمكنك الاطّلاع على نموذج البدء السريع للاختبار.