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

يشتمل واجهة سطر الأوامر في Firebase على محاكي دوال Cloud يمكنه محاكاة أنواع الدوال التالية:

  • دوال HTTPS
  • الدوال القابلة للاتصال
  • تم تشغيل وظائف الخلفية من مصادقة Firebase وقاعدة بيانات الوقت الفعلي وCloud Firestore وCloud Storage وCloud Pub/Sub.

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

تثبيت واجهة سطر الأوامر في Firebase

لاستخدام محاكي وظائف السحابة الإلكترونية، ثبِّت أولاً واجهة سطر الأوامر لمنصة Firebase:

npm install -g firebase-tools

لاستخدام المحاكي المحلي، يجب أن تعتمد دوال Cloud على ما يلي:

  • firebase-admin الإصدار 8.0.0 أو أحدث
  • firebase-functions الإصدار 3.0.0 أو أحدث

إعداد بيانات اعتماد المشرف (اختياري)

إذا كنت تريد أن تتفاعل اختبارات الدوال مع واجهات Google APIs أو واجهات برمجة تطبيقات Firebase الأخرى من خلال SDK لمشرف Firebase، قد تحتاج إلى إعداد بيانات اعتماد المشرف.

  • تتضمن مشغلات Cloud Firestore وقاعدة بيانات الوقت الفعلي بالفعل بيانات اعتماد كافية، ولا تتطلب إعدادًا إضافيًا.
  • أمّا جميع واجهات برمجة التطبيقات الأخرى، بما في ذلك واجهات برمجة تطبيقات Firebase، مثل المصادقة و"المراسلة عبر السحابة الإلكترونية من Firebase" أو Google APIs، مثل "ترجمة Cloud" أو "الكلام عبر السحابة الإلكترونية"، فتتطلب خطوات الإعداد الموضَّحة في هذا القسم. وينطبق هذا سواء كنت تستخدم واجهة أوامر السحابة الإلكترونية أو 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 وCloud Firestore و"قاعدة بيانات الوقت الفعلي" و"استضافة Firebase" استنادًا إلى المنتجات التي أعددتها في مشروعك المحلي باستخدام 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);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")

واجهة برمجة تطبيقات الويب النموذجية

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "127.0.0.1", 5001);

واجهة برمجة تطبيقات مساحات الاسم على الويب

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
  • محاكي المصادقة
  • محاكي النشر/الاشتراك

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

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

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

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

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

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

يمكنك الاطّلاع على سجلات "الدوالّ" في واجهة مستخدم 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 Functions من أجل إنشاء محتوى ديناميكي من أجل استضافة Firebase، تستخدم firebase emulators:start دوال HTTP المحلية كخوادم وكيل للاستضافة.

التسجيل

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

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

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