رابط خط فرمان فایربیس شامل یک شبیهساز Cloud Functions است که میتواند انواع توابع زیر را شبیهسازی کند:
- توابع HTTPS
- توابع قابل فراخوانی
- توابع صف وظایف
- Background functions triggered from Firebase Authentication , Realtime Database , Cloud Firestore , Cloud Storage , supported Firebase alerts, and Cloud Pub/Sub.
شما میتوانید توابع را به صورت محلی اجرا کنید تا قبل از استقرار در محیط عملیاتی، آنها را آزمایش کنید.
نصب رابط خط فرمان فایربیس
To use the Cloud Functions emulator, first install the Firebase CLI:
npm install -g firebase-tools
برای استفاده از شبیهساز محلی، Cloud Functions شما باید به موارد زیر وابسته باشند:
- نسخه
firebase-admin8.0.0یا بالاتر. - نسخه
3.0.0یا بالاتر ازfirebase-functions.
تنظیم اعتبارنامههای مدیر (اختیاری)
If you want your functions tests to interact with Google APIs or other Firebase APIs via the Firebase Admin SDK , you may need to set up admin credentials.
- Cloud Firestore and Realtime Database triggers already have sufficient credentials, and do not require additional setup.
- تمام APIهای دیگر، از جمله APIهای Firebase مانند Authentication و FCM یا APIهای Google مانند Cloud Translation یا Cloud Speech، به مراحل راهاندازی شرح داده شده در این بخش نیاز دارند. این موضوع چه از پوسته Cloud Functions و چه
firebase emulators:startاستفاده کنید، صدق میکند.
برای تنظیم اعتبارنامههای مدیر برای توابع شبیهسازی شده:
- Open the Service Accounts pane of the Google Cloud console.
- Make sure that App Engine default service account is selected, and use the options menu at right to select 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
مجموعه شبیهساز را اجرا کنید
To run the Cloud Functions emulator, use the emulators:start command:
firebase emulators:start
دستور emulators:start شبیهسازهایی برای Cloud Functions ، Cloud Firestore، Realtime Database و Firebase Hosting را بر اساس محصولاتی که در پروژه محلی خود با استفاده از firebase init مقداردهی اولیه کردهاید، اجرا میکند. اگر میخواهید یک شبیهساز خاص را اجرا کنید، از پرچم --only استفاده کنید:
firebase emulators:start --only functions
If you want to run a test suite or testing script after the emulators have started, use the emulators:exec command:
firebase emulators:exec "./my-test.sh"
برنامه خود را برای ارتباط با شبیهسازها آماده کنید
To instrument your app to interact with the emulators, you may need to do some additional configuration.
برنامه خود را برای توابع قابل فراخوانی، تجهیز کنید
اگر فعالیتهای نمونهسازی و آزمایشی شما شامل توابع 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 آماده کنید
Each HTTPS function in your code will be served from the local emulator using the following URL format:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
برای مثال، یک تابع ساده helloWorld با پورت و منطقه میزبان پیشفرض در آدرس زیر ارائه میشود:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
برنامه خود را برای شبیهسازی توابع صف وظایف، تجهیز کنید
شبیهساز به طور خودکار صفهای وظیفه شبیهسازی شده را بر اساس تعاریف تریگر تنظیم میکند و Admin SDK در صورت تشخیص اجرای درخواستهای صفبندی شده از طریق متغیر محیطی CLOUD_TASKS_EMULATOR_HOST ، آنها را به سمت شبیهساز تغییر مسیر میدهد.
توجه داشته باشید که سیستم اعزام مورد استفاده در محیط عملیاتی پیچیدهتر از سیستم پیادهسازی شده در شبیهساز است، بنابراین نباید انتظار داشته باشید که رفتار شبیهسازی شده دقیقاً منعکسکننده محیطهای عملیاتی باشد. پارامترهای درون شبیهساز، مرزهای بالایی را برای نرخ اعزام و تلاش مجدد وظایف فراهم میکنند.
اپلیکیشن خود را برای شبیهسازی توابع فعالشده در پسزمینه تجهیز کنید
The Cloud Functions emulator supports background-triggered functions from the following sources:
- شبیهساز 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، به نمونه شروع سریع تست مراجعه کنید.