قبل توصيل تطبيقك بمحاكي Cloud Storage for Firebase ، تأكد من فهمك لسير عمل Firebase Local Emulator Suite الكلي ، وأنك تقوم بتثبيت وتهيئة Local Emulator Suite ومراجعة أوامر CLI الخاصة بها.
اختر مشروع Firebase
يحاكي Firebase Local Emulator Suite المنتجات لمشروع Firebase واحد.
لتحديد المشروع المراد استخدامه ، قبل بدء المحاكيات ، في CLI ، firebase use
في دليل العمل الخاص بك. أو يمكنك تمرير علامة --project
إلى كل أمر محاكي.
تدعم Local Emulator Suite محاكاة مشاريع Firebase الحقيقية والمشاريع التجريبية .
نوع المشروع | سمات | استخدم مع المحاكيات |
---|---|---|
حقيقي | مشروع Firebase الحقيقي هو أحد المشروعات التي أنشأتها وضبطتها (على الأرجح عبر وحدة تحكم Firebase). تحتوي المشاريع الحقيقية على موارد مباشرة ، مثل طبعات قواعد البيانات أو حاويات التخزين أو الوظائف أو أي مورد آخر تقوم بإعداده لمشروع Firebase هذا. | عند العمل مع مشاريع Firebase الحقيقية ، يمكنك تشغيل برامج محاكاة لأي من المنتجات المدعومة أو جميعها. بالنسبة إلى أي منتجات لا تقوم بمحاكاتها ، ستتفاعل تطبيقاتك وأكوادك مع المورد المباشر (مثيل قاعدة البيانات ، دلو التخزين ، الوظيفة ، إلخ). |
تجريبي | لا يحتوي مشروع Firebase التجريبي على تهيئة Firebase حقيقية ولا موارد مباشرة. يتم الوصول إلى هذه المشاريع عادةً عبر مختبرات الرموز أو البرامج التعليمية الأخرى. معرفات المشروع للمشاريع التجريبية لها البادئة | عند العمل مع مشاريع Firebase التجريبية ، تتفاعل تطبيقاتك ورموزك مع برامج المحاكاة فقط . إذا حاول تطبيقك التفاعل مع مورد لا يعمل المحاكي من أجله ، فسيفشل هذا الرمز. |
نوصيك باستخدام المشاريع التجريبية حيثما أمكن ذلك. الفوائد تشمل:
- إعداد أسهل ، حيث يمكنك تشغيل المحاكيات دون إنشاء مشروع Firebase
- أمان أقوى ، نظرًا لأنه إذا كانت التعليمات البرمجية الخاصة بك تستدعي عن طريق الخطأ موارد (إنتاج) غير محاكية ، فلا توجد فرصة لتغيير البيانات والاستخدام والفوترة
- دعم أفضل في وضع عدم الاتصال ، حيث لا توجد حاجة للوصول إلى الإنترنت لتنزيل تكوين SDK الخاص بك.
صك تطبيقك للتحدث مع المحاكيات
أنظمة Android و Apple و Web SDK
قم بإعداد التكوين داخل التطبيق أو فئات الاختبار للتفاعل مع Cloud Storage for Firebase emulator على النحو التالي.
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 storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
سويفت
Storage.storage().useEmulator(withHost:"localhost", port:9199)
الويب v8
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("localhost", 9199); }
الويب الإصدار 9
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "localhost", 9199); }
لا يلزم إعداد إضافي لاختبار وظائف السحابة التي يتم تشغيلها بواسطة Cloud Storage لأحداث Firebase باستخدام المحاكي. عند تشغيل كل من محاكيات Cloud Storage for Firebase و Cloud Functions ، فإنها تعمل معًا تلقائيًا.
SDKs للمشرف
تتصل مجموعات Firebase Admin SDK تلقائيًا بمحاكي Cloud Storage for Firebase عند تعيين متغير البيئة FIREBASE_STORAGE_EMULATOR_HOST
:
export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"
لاحظ أن محاكي Cloud Functions يدرك تلقائيًا محاكي Cloud Storage for Firebase حتى تتمكن من تخطي هذه الخطوة عند اختبار عمليات الدمج بين Cloud Functions والتخزين السحابي لمحاكيات Firebase. سيتم تعيين متغير البيئة تلقائيًا لـ Admin SDK في Cloud Storage for Firebase.
إذا كنت تريد أن يتصل كود Admin SDK بمحاكي مشترك يعمل في بيئة أخرى ، فستحتاج إلى تحديد نفس معرف المشروع الذي قمت بتعيينه باستخدام Firebase CLI . يمكنك تمرير معرف المشروع initializeApp
مباشرة أو تعيين متغير البيئة GCLOUD_PROJECT
.
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغيرات البيئة
export GCLOUD_PROJECT="your-project-id"
استيراد وتصدير البيانات
تسمح لك قاعدة البيانات والتخزين السحابي لمحاكيات Firebase بتصدير البيانات من مثيل محاكي قيد التشغيل. حدد مجموعة أساسية من البيانات لاستخدامها في اختبارات الوحدة الخاصة بك أو مهام سير عمل التكامل المستمر ، ثم قم بتصديرها لمشاركتها بين الفريق.
firebase emulators:export ./dir
في الاختبارات ، عند بدء تشغيل المحاكي ، قم باستيراد البيانات الأساسية.
firebase emulators:start --import=./dir
يمكنك توجيه المحاكي لتصدير البيانات عند إيقاف التشغيل ، إما بتحديد مسار تصدير أو ببساطة باستخدام المسار الذي تم تمريره إلى علامة --import
.
firebase emulators:start --import=./dir --export-on-exit
تعمل خيارات استيراد وتصدير البيانات هذه مع firebase emulators:exec
أيضًا. لمزيد من المعلومات ، راجع مرجع أمر المحاكي .
كيف يختلف Cloud Storage لمحاكي Firebase عن الإنتاج
لاختبار تطبيقات العميل ، يتماشى التخزين السحابي لمحاكي Firebase مع الإنتاج بشكل مثالي تقريبًا فيما يتعلق بمنطقة سطح Firebase API. من المتوقع أن تعمل جميع أوامر Firebase بين حزم Firebase SDK العادية (أنظمة الويب و Android و Apple).
لاختبار التطبيقات من جانب الخادم ، توجد قيود. تستخدم تطبيقات Firebase Admin SDK سطح Google Cloud API ، ولا تتم محاكاة جميع نقاط النهاية لواجهة برمجة التطبيقات هذه. كقاعدة عامة ، يتم أيضًا تنفيذ أي شيء يمكن القيام به من حزم SDK للعميل (تحميل الملفات أو حذفها ، والحصول على البيانات الوصفية وتعيينها) للاستخدام من حزم SDK الخاصة بالمسؤول ، ولكن لا يتم تنفيذ أي شيء يتجاوز ذلك. الاستثناءات البارزة مذكورة أدناه.
الاختلافات من Google Cloud Storage
يوفر منتج Cloud Storage for Firebase ، بما في ذلك محاكي التخزين ، مجموعة فرعية من وظائف Google Cloud Storage (GCS) التي تركز على كائنات التخزين المفيدة جدًا لتطوير تطبيقات Firebase. يختلف Cloud Storage for Firebase عن GCS بالطرق التالية:
- لا يدعم Cloud Storage for Firebase حاليًا
Bucket
APIs لإنشاء أو إدراج أو الحصول على أو حذف حاويات التخزين. - من Google Cloud Storage Objects API ، يتم دعم الطرق التالية:
copy
،delete
،get
،insert
،list
،patch
،rewrite
،update
.
سحابة IAM
لا يحاول Firebase Emulator Suite تكرار أو احترام أي سلوك متعلق بـ IAM للتشغيل. تلتزم المحاكيات بقواعد أمان Firebase المقدمة ، ولكن في المواقف التي يتم فيها استخدام IAM عادةً ، على سبيل المثال لتعيين وظائف السحابة التي تستدعي حساب الخدمة وبالتالي الأذونات ، فإن المحاكي غير قابل للتكوين وسيستخدم الحساب المتوفر عالميًا على جهاز المطور الخاص بك ، مشابه لتشغيل برنامج نصي محلي مباشرة.
إخطارات الحانة / الفرعية
لا يتكامل محاكي Cloud Storage for Firebase مع محاكي Cloud Pub / Sub وبالتالي لا يدعم إنشاء قنوات / إشعارات لتغييرات كائن التخزين. نوصي باستخدام مشغلات Cloud Functions Storage مباشرة.
البيانات الوصفية على مستوى الحاوية
لا يدعم محاكي Cloud Storage for Firebase أي تكوين على مستوى الحاوية بما في ذلك فئة التخزين أو تكوين CORS على مستوى الحاوية أو الملصقات أو سياسات الاحتفاظ. يعتزم Firebase تحسين هذا الدعم بمرور الوقت.
ماذا بعد؟
- للحصول على مجموعة منسقة من مقاطع الفيديو وأمثلة تفصيلية عن كيفية التنفيذ ، اتبع قائمة تشغيل تدريب Firebase Emulators .
- نظرًا لأن الوظائف التي تم تشغيلها هي تكامل نموذجي مع Cloud Storage for Firebase ، تعرف على المزيد حول وظائف السحابة لمحاكي Firebase في وظائف التشغيل محليًا .