Firebase CLI شامل یک شبیه ساز Cloud Functions است که می تواند انواع عملکردهای زیر را شبیه سازی کند:
- توابع HTTPS
- توابع قابل فراخوانی
- توابع صف وظایف
- توابع پسزمینه از Firebase Authentication ، Realtime Database ، Cloud Firestore ، Cloud Storage ، هشدارهای Firebase پشتیبانیشده و Cloud Pub/Sub فعال میشوند.
شما می توانید توابع را به صورت محلی اجرا کنید تا آنها را قبل از استقرار در تولید آزمایش کنید.
برای استفاده از شبیه ساز Cloud Functions ، ابتدا Firebase CLI را نصب کنید:
npm install -g firebase-tools
برای استفاده از شبیه ساز محلی، Cloud Functions شما باید به موارد زیر بستگی داشته باشد:
-
firebase-admin
نسخه8.0.0
یا بالاتر. -
firebase-functions
نسخه3.0.0
یا بالاتر.
اگر میخواهید آزمایشهای عملکرد شما با Google API یا سایر APIهای Firebase از طریق Firebase Admin SDK تعامل داشته باشند، ممکن است لازم باشد اعتبارنامههای سرپرست را تنظیم کنید.
- راهاندازهای Cloud Firestore و Realtime Database از قبل دارای اعتبار کافی هستند و نیازی به تنظیمات اضافی ندارند .
- همه APIهای دیگر، از جمله APIهای Firebase مانند Authentication و FCM یا APIهای Google مانند Cloud Translation یا Cloud Speech، به مراحل راه اندازی توضیح داده شده در این بخش نیاز دارند. چه از پوسته Cloud Functions یا
firebase emulators:start
استفاده کنید، این امر صدق می کند.
برای تنظیم اعتبار مدیریت برای توابع شبیه سازی شده:
- صفحه حسابهای سرویس کنسول Google Cloud را باز کنید.
- مطمئن شوید که حساب سرویس پیشفرض 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
پس از تکمیل این مراحل، آزمایشهای عملکرد شما میتوانند با استفاده از Admin SDK به Firebase و Google API دسترسی داشته باشند. به عنوان مثال، هنگام آزمایش یک تریگر Authentication ، تابع شبیه سازی شده می تواند 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
استفاده کنید:
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 را به این صورت پیکربندی کنید:
// 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)
// 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)
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 در کد شما از شبیه ساز محلی با استفاده از فرمت URL زیر ارائه می شود:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
به عنوان مثال یک تابع ساده helloWorld
با پورت و منطقه میزبان پیشفرض در این آدرس ارائه میشود:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
شبیهساز بهطور خودکار صفهای کار شبیهسازیشده را بر اساس تعاریف ماشه تنظیم میکند، و Admin SDK درخواستهای ردیفشده را در صورتی که تشخیص دهد که از طریق متغیر محیطی CLOUD_TASKS_EMULATOR_HOST
در حال اجرا است، مجدداً به سمت شبیهساز هدایت میکند.
توجه داشته باشید که سیستم اعزام مورد استفاده در تولید پیچیدهتر از سیستم اجرا شده در شبیهساز است، بنابراین نباید انتظار رفتار شبیهسازی شده را داشته باشید که دقیقاً محیطهای تولید را منعکس کند. پارامترهای درون شبیهساز، کرانهای بالایی را برای سرعت ارسال و امتحان مجدد کارها ارائه میکنند.
شبیه ساز Cloud Functions از توابع فعال در پس زمینه از منابع زیر پشتیبانی می کند:
- شبیه ساز Realtime Database
- شبیه ساز Cloud Firestore
- شبیه ساز Authentication
- شبیه ساز Pub/Sub
- شبیه ساز هشدار Firebase
برای راهاندازی رویدادهای پسزمینه، منابع پشتیبان را با استفاده از Emulator Suite UI یا با اتصال برنامه یا کد آزمایشی خود به شبیهسازها با استفاده از SDK برای پلتفرم خود تغییر دهید.
برای عملکردهایی که برای مدیریت رویدادهای سفارشی Firebase Extensions با Cloud Functions v2 پیادهسازی میکنید، شبیهساز Cloud Functions با شبیهساز Eventarc جفت میشود تا از فعالهای Eventarc پشتیبانی کند.
برای آزمایش کنترلکنندههای رویداد سفارشی برای برنامههای افزودنی که رویدادها را منتشر میکنند، باید شبیهسازهای Cloud Functions و Eventarc را نصب کنید.
اگر شبیهساز Eventarc در حال اجرا باشد، زمان اجرا Cloud Functions متغیر محیطی EVENTARC_EMULATOR
را روی localhost:9299
تنظیم میکند. هنگامی که متغیر محیطی EVENTARC_EMULATOR
تنظیم شود Firebase Admin SDK به طور خودکار به شبیه ساز Eventarc متصل می شود. میتوانید پورت پیشفرض را همانطور که در Configure Local Emulator Suite توضیح داده شد، تغییر دهید.
هنگامی که متغیرهای محیطی به درستی پیکربندی شوند، Firebase Admin SDK به طور خودکار رویدادها را به شبیه ساز Eventarc ارسال می کند. به نوبه خود، شبیه ساز Eventarc با شبیه ساز Cloud Functions تماس می گیرد تا هر کنترل کننده ثبت شده را فعال کند.
میتوانید گزارشهای Functions را در Emulator Suite UI برای جزئیات در مورد اجرای کنترلر بررسی کنید.
مجموعه شبیه ساز شامل چندین شبیه ساز است که امکان تست تعاملات بین محصول را فراهم می کند.
اگر توابعی دارید که از Firebase Admin SDK برای نوشتن در Cloud Firestore استفاده میکند، این نوشتهها در صورت اجرا به شبیهساز Cloud Firestore ارسال میشوند. اگر توابع بیشتری توسط این نوشته ها فعال شوند، در شبیه ساز Cloud Functions اجرا می شوند.
اگر توابعی دارید که از Firebase Admin SDK (نسخه 9.7.0 یا بالاتر) برای نوشتن در Cloud Storage استفاده میکند، این نوشتهها در صورت اجرا به شبیهساز Cloud Storage ارسال میشوند. اگر توابع بیشتری توسط این نوشته ها فعال شوند، در شبیه ساز Cloud Functions اجرا می شوند.
اگر توابعی دارید که از Firebase Admin SDK (نسخه 9.3.0 یا بالاتر) برای نوشتن در Firebase Authentication استفاده میکند، این نوشتهها در صورت اجرا به شبیهساز Auth ارسال میشوند. اگر توابع بیشتری توسط این نوشته ها فعال شوند، در شبیه ساز Cloud Functions اجرا می شوند.
اگر Cloud Functions برای تولید محتوای پویا برای Firebase Hosting استفاده می کنید، firebase emulators:start
از توابع HTTP محلی شما به عنوان پراکسی برای میزبانی استفاده می کند.
در هر پروژه ای که شامل حداقل یک ماشه هشدار Firebase پشتیبانی شده باشد، رابط کاربری شبیه ساز شامل یک برگه FireAlerts است. برای شبیه سازی یک ماشه هشدار:
- تب FireAlerts را باز کنید. این برگه یک منوی کرکره ای پر شده با انواع هشدارهایی که دارای محرک های مرتبط با آنها هستند را نشان می دهد (به عنوان مثال، اگر یک ماشه onNewFatalIssuePublished دارید، crashlytics.newFatalIssue نمایش داده می شود).
- یک نوع هشدار را انتخاب کنید. فرم به صورت خودکار با مقادیر پیش فرض پر می شود که قابل ویرایش هستند. می توانید فیلدهای رویداد را ویرایش کنید (سایر اطلاعات رویداد هشدار یا استنباط می شود، مقادیر ساختگی یا به صورت تصادفی تولید می شود).
- Send Alert را انتخاب کنید تا یک هشدار مصنوعی به شبیهساز توابع ارسال شود، با ورود به سیستم در Alerts در کنسول Firebase (و همچنین در گزارشها).
شبیهساز گزارشها را از توابع شما به پنجره ترمینال که در آن اجرا میشوند، پخش میکند. تمام خروجی های console.log()
، console.info()
، console.error()
و console.warn()
را در داخل توابع شما نمایش می دهد.
برای مثال کامل استفاده از مجموعه شبیه ساز Firebase، نمونه شروع سریع آزمایشی را ببینید.