«واسط خط فرمان Firebase» شامل شبیهساز Cloud Functions است که میتواند انواع تابع زیر را شبیهسازی کند:
- کارکردهای HTTPS
- توابع فراخواندنی
- توابع صف تکلیف
- توابع پسزمینهای که از Firebase Authentication، Realtime Database، Cloud Firestore، Cloud Storage، هشدارهای پشتیبانیشده Firebase، و Cloud Pub/Sub راهاندازی میشوند.
میتوانید کارکردها را بهصورت محلی اجرا کنید تا قبلاز استقرار در تولید، آنها را آزمایش کنید.
نصب «واسط خط فرمان Firebase»
برای استفاده از شبیهساز Cloud Functions، ابتدا «واسط خط فرمان Firebase» را نصب کنید:
npm install -g firebase-tools
برای استفاده از شبیهساز محلی، Cloud Functions شما باید به موارد زیر وابسته باشد:
-
firebase-adminنسخه8.0.0یا بالاتر. -
firebase-functionsنسخه3.0.0یا بالاتر.
راهاندازی اطلاعات اعتباری سرپرست (اختیاری)
اگر میخواهید تستهای تابع شما ازطریق کیت توسعه نرمافزار Firebase Admin با Google APIs یا دیگر Firebase APIs تعامل داشته باشد، ممکن است لازم باشد اطلاعات اعتباری سرپرست را راهاندازی کنید.
- Cloud Firestore و Realtime Database محرک ازقبل اطلاعات اعتباری کافی دارند و به راهاندازی اضافی نیاز ندارند.
- همه «میاناهای برنامهسازی کاربردی» دیگر، ازجمله «میاناهای برنامهسازی کاربردی» Firebase مثل Authentication و FCM یا «میاناهای برنامهسازی کاربردی» Google مثل Cloud Translation یا Cloud Speech، به مراحل راهاندازی که در این بخش توضیح داده شده است نیاز دارند. این مورد چه از پوسته Cloud Functions استفاده کنید چه از
firebase emulators:startاعمال میشود.
برای تنظیم اطلاعات اعتباری سرپرست برای کارکردهای شبیهسازیشده:
- بخش «حسابهای سرویس» کنسول Google Cloud را باز کنید.
- مطمئن شوید که App Engine حساب سرویس پیشفرض انتخاب شده باشد و از منو گزینهها در سمت راست برای انتخاب ایجاد کلید استفاده کنید.
- وقتی از شما خواسته شد، JSON را برای نوع کلید انتخاب کنید و روی ایجاد کلیک کنید.
اطلاعات اعتباری پیشفرض 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 دسترسی پیدا کنند. برای مثال، هنگام آزمایش
راهانداز 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"
پساز راهاندازی، شبیهساز گزارشهای توابع شما را به پنجره ترمینالی که در آن اجرا میشود جاریسازی میکند. همه بروندادهای console.log()،
console.info()، console.error()، و console.warn() عبارت را در
توابع شما نمایش میدهد.
توجه داشته باشید که برونداد شبیهساز بهطور پیشفرض استقرار توابع را در منطقه خاصی (us-central1) شبیهسازی میکند که ممکن است با منطقه پیشفرض استقرار تولید واقعی مطابقت نداشته باشد. برای اطلاعات بیشتر درباره مناطق، Cloud Functions مکان را ببینید.
برنامهتان را ابزاربندی کنید تا با شبیهسازها صحبت کند
برای ابزاربندی برنامهتان بهمنظور تعامل با شبیهسازها، ممکن است لازم باشد پیکربندیهای اضافی انجام دهید.
برنامهتان را برای توابع فراخوانپذیر ابزاربندی کنید
اگر فعالیتهای نمونه اولیه و آزمایش شما شامل کارکردهای زیرینه فراخواندنی است، تعامل با شبیهساز 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);
Swift
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Unity
FirebaseFunctions functions = FirebaseFunctions.DefaultInstance; // Connects to the Functions Emulator running on port 5001 functions.UseFunctionsEmulator("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 در کد شما بااستفاده از قالب نشانی وب زیر از شبیهساز محلی ارائه خواهد شد:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
برای مثال، تابع ساده helloWorld با درگاه میزبان و منطقه پیشفرض در این نشانی ارائه میشود:
https://localhost:5001/$PROJECT/us-central1/helloWorld
برنامهتان را برای شبیهسازی کارکردهای صف تکلیف ابزاربندی کنید
شبیهساز بهطور خودکار صفهای تکلیف شبیهسازیشده را براساس تعریفهای راهانداز تنظیم میکند، و اگر «کیت توسعه نرمافزار سرپرست» تشخیص دهد که ازطریق متغیر محیط CLOUD_TASKS_EMULATOR_HOST درحال اجرا است، درخواستهای درصفانتظار را به شبیهساز هدایت میکند.
توجه داشته باشید که سیستم اعزام مورداستفاده در تولید پیچیدهتر از سیستم پیادهسازیشده در شبیهساز است، بنابراین نباید انتظار داشته باشید که رفتار شبیهسازیشده دقیقاً محیطهای تولید را منعکس کند. پارامترهای درون شبیهساز، کرانهای بالایی را برای نرخ ارسال و تلاش مجدد وظایف فراهم میکنند.
ابزاربندی برنامه برای شبیهسازی کارکردهای راهاندازیشده در پسزمینه
شبیهساز Cloud Functions از توابع راهاندازیشده در پسزمینه از منابع زیر پشتیبانی میکند:
- شبیهساز Realtime Database
- شبیهساز Cloud Firestore
- شبیهساز Authentication
- شبیهساز Pub/Sub
- شبیهساز هشدارهای Firebase
برای راهاندازی رویدادهای پسزمینهای، منابع زیرینه را بااستفاده از Emulator Suite UI، یا با متصل کردن برنامه یا کد آزمایشی خود به شبیهسازها بااستفاده از «کیت توسعه نرمافزار» برای پلاتفرم خود اصلاح کنید.
آزمایش کردن مدیریتکنندههای رویدادهای سفارشی منتشرشده توسط «افزونهها»
برای توابعی که برای مدیریت رویدادهای سفارشی Firebase Extensions با Cloud Functions نسخه ۲ پیادهسازی میکنید، شبیهساز Cloud Functions با شبیهساز Eventarc جفت میشود تا از راهاندازهای Eventarc پشتیبانی کند.
برای آزمایش کردن مدیریتکنندههای رویداد سفارشی برای افزونههایی که رویداد منتشر میکنند، باید شبیهسازهای Cloud Functions و Eventarc را نصب کنید.
اگر شبیهساز Eventarc درحال اجرا باشد، زمان اجرای Cloud Functions متغیر محیط EVENTARC_EMULATOR را در فرایند کنونی روی localhost:9299 تنظیم میکند. وقتی متغیر محیطی EVENTARC_EMULATOR تنظیم شود، Firebase Admin SDK بهطور خودکار به شبیهساز Eventarc متصل میشود. میتوانید
درگاه پیشفرض را همانطور که در بخش پیکربندی Local Emulator Suite بحث شده است تغییر دهید.
وقتی متغیرهای محیط بهدرستی پیکربندی شوند، Firebase Admin SDK بهطور خودکار رویدادها را به شبیهساز Eventarc ارسال میکند. بهنوبه خود، شبیهساز Eventarc با شبیهساز Cloud Functions تماس میگیرد تا هریک از مدیران ثبتشده را راهاندازی کند.
برای جزئیات مربوط به اجرای کنترلکننده، میتوانید گزارشهای «کارکردها» را در Emulator Suite UI بررسی کنید.
تعامل با سرویسهای دیگر
مجموعه شبیهساز شامل چندین شبیهساز است که امکان آزمایش تعاملات بینمحصولی را فراهم میکند.
Cloud Firestore
اگر توابعی دارید که از «کیت توسعه نرمافزار سرپرست Firebase» برای نوشتن در Cloud Firestore استفاده میکنند، این نوشتنها به شبیهساز Cloud Firestore ارسال خواهد شد اگر درحال اجرا باشد. اگر عملکردهای دیگری با آن نوشتنها راهاندازی شوند، در شبیهساز Cloud Functions اجرا خواهند شد.
Cloud Storage
اگر توابعی دارید که از «کیت توسعه نرمافزار Firebase Admin» (نسخه ۹.۷.۰ یا بالاتر) برای نوشتن در Cloud Storage استفاده میکنند، این نوشتنها به شبیهساز Cloud Storage ارسال خواهد شد اگر درحال اجرا باشد. اگر عملکردهای دیگری با آن نوشتنها راهاندازی شوند، در شبیهساز Cloud Functions اجرا خواهند شد.
Firebase Authentication
اگر توابعی دارید که از «کیت توسعه نرمافزار سرپرست Firebase» (نسخه ۹.۳.۰ یا بالاتر) برای نوشتن در Firebase Authentication استفاده میکنند، این نوشتنها به شبیهساز Auth ارسال خواهد شد اگر درحال اجرا باشد. اگر عملکردهای دیگری با آن نوشتنها راهاندازی شوند، در شبیهساز Cloud Functions اجرا خواهند شد.
میزبانی Firebase
اگر از Cloud Functions برای تولید محتوای پویا برای
Firebase Hosting استفاده میکنید، firebase emulators:start
از کارکردهای HTTP محلی شما بهعنوان پراکسی برای میزبانی استفاده میکند.
هشدارهای Firebase
در هر پروژهای که حداقل یک راهانداز هشدار Firebase پشتیبانیشده داشته باشد، رابط کاربری شبیهساز شامل برگه FireAlerts است. برای شبیهسازی کردن راهاندازی هشدار:
- برگه FireAlerts (هشدار آتشسوزی) را باز کنید. این برگه منو کرکرهای را نمایش میدهد که با انواع هشدار که محرکهای مرتبط با آنها وجود دارد پر شده است (برای مثال، اگر محرک onNewFatalIssuePublished دارید، crashlytics.newFatalIssue نمایش داده میشود).
- نوع هشداری را انتخاب کنید. فرم بهطور خودکار با مقادیر پیشفرض تکمیل میشود که میتواند ویرایش شود. میتوانید فیلدهای رویداد را ویرایش کنید (سایر اطلاعات رویداد هشدار یا استنباط میشود، یا مقادیر ساختگی است، یا بهصورت تصادفی تولید میشود).
- برای ارسال هشدار ترکیبی به شبیهساز کارکردها، ارسال هشدار را انتخاب کنید، گزارشگیری در هشدارها در کنسول Firebase (و همچنین در گزارشها) دردسترس است.
مراحل بعدی
برای مشاهده نمونه کامل استفاده از مجموعه شبیهساز Firebase، به نمونه شروع سریع آزمایش مراجعه کنید.