رابط خط فرمان فایربیس شامل یک شبیهساز 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-admin8.0.0یا بالاتر. - نسخه
3.0.0یا بالاتر ازfirebase-functions.
تنظیم اعتبارنامههای مدیر (اختیاری)
اگر میخواهید تستهای توابع شما از طریق Firebase Admin SDK با APIهای گوگل یا سایر APIهای فایربیس تعامل داشته باشند، ممکن است لازم باشد اعتبارنامههای ادمین را تنظیم کنید.
- تریگرهای Cloud Firestore و Realtime Database از قبل اعتبارنامههای کافی دارند و نیازی به تنظیمات اضافی ندارند .
- تمام APIهای دیگر، از جمله APIهای Firebase مانند Authentication و FCM یا APIهای Google مانند Cloud Translation یا Cloud Speech، به مراحل راهاندازی شرح داده شده در این بخش نیاز دارند. این موضوع چه از پوسته Cloud Functions و چه
firebase emulators:startاستفاده کنید، صدق میکند.
برای تنظیم اعتبارنامههای مدیر برای توابع شبیهسازی شده:
- پنل حسابهای سرویس (Service Accounts) کنسول Google Cloud را باز کنید.
- مطمئن شوید که حساب سرویس پیشفرض App Engine انتخاب شده است و از منوی گزینهها در سمت راست برای انتخاب Create key استفاده کنید.
- وقتی از شما خواسته شد، نوع کلید را JSON انتخاب کنید و روی Create کلیک کنید.
اعتبارنامههای پیشفرض گوگل خود را طوری تنظیم کنید که به کلید دانلود شده اشاره کنند:
یونیکس
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 APIs دسترسی داشته باشند. برای مثال، هنگام تست یک تریگر 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، Realtime Database و Firebase Hosting را بر اساس محصولاتی که در پروژه محلی خود با استفاده از firebase init مقداردهی اولیه کردهاید، اجرا میکند. اگر میخواهید یک شبیهساز خاص را اجرا کنید، از پرچم --only استفاده کنید:
firebase emulators:start --only functions
اگر میخواهید یک مجموعه تست یا اسکریپت تست را پس از شروع به کار شبیهسازها اجرا کنید، از دستور emulators:exec استفاده کنید:
firebase emulators:exec "./my-test.sh"
برنامه خود را برای ارتباط با شبیهسازها آماده کنید
برای اینکه برنامه شما بتواند با شبیهسازها تعامل داشته باشد، ممکن است لازم باشد پیکربندیهای بیشتری انجام دهید.
برنامه خود را برای توابع قابل فراخوانی، تجهیز کنید
اگر فعالیتهای نمونهسازی و آزمایشی شما شامل توابع backend قابل فراخوانی است، تعامل با Cloud Functions for Firebase را به این صورت پیکربندی کنید:
Kotlin
// 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);
سویفت
Functions.functions().useEmulator(withHost: "localhost", port: 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
برنامه خود را برای شبیهسازی توابع صف وظایف، تجهیز کنید
شبیهساز به طور خودکار صفهای وظیفه شبیهسازی شده را بر اساس تعاریف تریگر تنظیم میکند و Admin SDK در صورت تشخیص اجرای درخواستهای صفبندی شده از طریق متغیر محیطی CLOUD_TASKS_EMULATOR_HOST ، آنها را به سمت شبیهساز تغییر مسیر میدهد.
توجه داشته باشید که سیستم اعزام مورد استفاده در محیط عملیاتی پیچیدهتر از سیستم پیادهسازی شده در شبیهساز است، بنابراین نباید انتظار داشته باشید که رفتار شبیهسازی شده دقیقاً منعکسکننده محیطهای عملیاتی باشد. پارامترهای درون شبیهساز، مرزهای بالایی را برای نرخ اعزام و تلاش مجدد وظایف فراهم میکنند.
اپلیکیشن خود را برای شبیهسازی توابع فعالشده در پسزمینه تجهیز کنید
شبیهساز Cloud Functions توابع فعالشده در پسزمینه از منابع زیر پشتیبانی میکند:
- شبیهساز Realtime Database
- شبیهساز Cloud Firestore
- شبیهساز Authentication
- شبیهساز Pub/Sub
- شبیهساز هشدارهای فایربیس
برای فعال کردن رویدادهای پسزمینه، منابع back-end را با استفاده از Emulator Suite UI یا با اتصال برنامه یا کد آزمایشی خود به شبیهسازها با استفاده از SDK مخصوص پلتفرم خود، تغییر دهید.
کنترلکنندههای تست برای رویدادهای سفارشی منتشر شده توسط افزونهها
برای توابعی که برای مدیریت رویدادهای سفارشی Firebase Extensions با Cloud Functions v2 پیادهسازی میکنید، شبیهساز Cloud Functions با شبیهساز Eventarc جفت میشود تا از triggerهای Eventarc پشتیبانی کند.
برای آزمایش کنترلکنندههای رویداد سفارشی برای افزونههایی که رویدادها را منتشر میکنند، باید شبیهسازهای Cloud Functions و Eventarc را نصب کنید.
اگر شبیهساز Eventarc در حال اجرا باشد، زمان اجرای Cloud Functions متغیر محیطی EVENTARC_EMULATOR را در فرآیند فعلی روی localhost:9299 تنظیم میکند. Firebase Admin SDK به طور خودکار هنگام تنظیم متغیر محیطی EVENTARC_EMULATOR به شبیهساز Eventarc متصل میشوند. میتوانید پورت پیشفرض را همانطور که در بخش پیکربندی Local Emulator Suite بحث شده است، تغییر دهید.
وقتی متغیرهای محیطی به درستی پیکربندی شوند، Firebase Admin SDK به طور خودکار رویدادها را به شبیهساز Eventarc ارسال میکند. در عوض، شبیهساز Eventarc برای راهاندازی هرگونه هندلر ثبتشده، به شبیهساز Cloud Functions فراخوانی مجدد انجام میدهد.
برای جزئیات بیشتر در مورد اجرای هندلر، میتوانید لاگهای توابع را در Emulator Suite UI بررسی کنید.
تعاملات با سایر سرویسها
مجموعه شبیهساز شامل چندین شبیهساز است که امکان آزمایش تعاملات بین محصولات را فراهم میکند.
Cloud Firestore
اگر توابعی دارید که از Firebase Admin SDK برای نوشتن در Cloud Firestore استفاده میکنند، این نوشتنها در صورت اجرا به شبیهساز Cloud Firestore ارسال میشوند. اگر توابع بیشتری توسط این نوشتنها فعال شوند، در شبیهساز Cloud Functions اجرا خواهند شد.
Cloud Storage
اگر توابعی دارید که از Firebase Admin SDK (نسخه ۹.۷.۰ یا بالاتر) برای نوشتن در Cloud Storage استفاده میکنند، این نوشتنها در صورت اجرا به شبیهساز Cloud Storage ارسال میشوند. اگر توابع بیشتری توسط این نوشتنها فعال شوند، در شبیهساز Cloud Functions اجرا خواهند شد.
Firebase Authentication
اگر توابعی دارید که از Firebase Admin SDK (نسخه ۹.۳.۰ یا بالاتر) برای نوشتن در Firebase Authentication استفاده میکنند، این نوشتنها در صورت اجرا به شبیهساز Auth ارسال میشوند. اگر توابع بیشتری توسط این نوشتنها فعال شوند، در شبیهساز Cloud Functions اجرا خواهند شد.
میزبانی فایربیس
اگر Cloud Functions برای تولید محتوای پویا برای Firebase Hosting استفاده میکنید، firebase emulators:start از توابع HTTP محلی شما به عنوان پروکسی برای میزبانی استفاده میکند.
هشدارهای فایربیس
در هر پروژهای که حداقل شامل یک تریگر هشدار Firebase پشتیبانیشده باشد، رابط کاربری شبیهساز شامل یک تب FireAlerts است. برای شبیهسازی یک تریگر هشدار:
- تب FireAlerts را باز کنید. این تب یک منوی کشویی حاوی انواع هشدارهایی که محرکهای مرتبط با آنها را دارند، نمایش میدهد (برای مثال، اگر یک محرک onNewFatalIssuePublished دارید، crashlytics.newFatalIssue نمایش داده میشود).
- نوع هشدار را انتخاب کنید. فرم به طور خودکار با مقادیر پیشفرض پر میشود که میتوان آنها را ویرایش کرد. میتوانید فیلدهای رویداد را ویرایش کنید (سایر اطلاعات از رویداد هشدار یا استنباط میشوند، یا مقادیر ساختگی هستند یا به صورت تصادفی تولید میشوند).
- برای ارسال یک هشدار مصنوعی به شبیهساز توابع، گزینه «ارسال هشدار» را انتخاب کنید، که ثبت وقایع در بخش «هشدارها» در کنسول Firebase (و همچنین در گزارشها) در دسترس است.
ثبت وقایع
این شبیهساز، گزارشهای توابع شما را به پنجره ترمینال که در آن اجرا میشوند، منتقل میکند. این شبیهساز تمام خروجی دستورات console.log() ، console.info() ، console.error() و console.warn() را درون توابع شما نمایش میدهد.
مراحل بعدی
برای مثال کاملی از استفاده از مجموعه شبیهساز Firebase، به نمونه شروع سریع تست مراجعه کنید.