Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

قم بتوصيل تطبيقك بـ Cloud Storage Emulator

قبل ربط التطبيق إلى محاكي سحابة التخزين، تأكد من أنك تفهم العام المحاكي جناح Firebase المحلية سير العمل ، وأنك تركيب وتكوين والمحاكي جناح المحلية وإعادة النظر في الأوامر CLI .

اختر مشروع Firebase

يحاكي Firebase Local Emulator Suite المنتجات لمشروع Firebase واحد.

لتحديد المشروع إلى استخدام، قبل البدء في محاكاة، في CLI المدى firebase use في دليل العمل الخاص بك. أو، يمكنك تمرير --project العلم إلى كل أمر المضاهاة.

المحاكي جناح محلي يدعم مضاهاة المشاريع Firebase حقيقية وعرض المشاريع.

نوع المشروع سمات استخدم مع المحاكيات
حقيقة

مشروع Firebase الحقيقي هو أحد المشروعات التي أنشأتها وضبطتها (على الأرجح عبر وحدة تحكم Firebase).

تحتوي المشاريع الحقيقية على موارد مباشرة ، مثل طبعات قواعد البيانات أو حاويات التخزين أو الوظائف أو أي مورد آخر تقوم بإعداده لمشروع Firebase هذا.

عند العمل مع مشاريع Firebase الحقيقية ، يمكنك تشغيل برامج محاكاة لأي من المنتجات المدعومة أو جميعها.

للحصول على أي من المنتجات التي لا يتم محاكاة، والتطبيقات الخاصة بك ورمز التفاعل مع الموارد الحية (مثيل قاعدة البيانات، ودلو التخزين، وظيفة، وما إلى ذلك).

تجريبي

مشروع تجريبي Firebase لا يوجد لديه التكوين Firebase الحقيقي وأية موارد الحية. يتم الوصول إلى هذه المشاريع عادةً عبر مختبرات الرموز أو البرامج التعليمية الأخرى.

معرفات مشروع تجريبي المشاريع لديها demo- البادئة.

عند العمل مع عرض مشاريع Firebase، تطبيقاتك وتتفاعل مع كود محاكاة فقط. إذا حاول تطبيقك التفاعل مع مورد لا يعمل المحاكي من أجله ، فسيفشل هذا الرمز.

نوصيك باستخدام المشاريع التجريبية حيثما أمكن ذلك. الفوائد تشمل:

  • إعداد أسهل ، حيث يمكنك تشغيل المحاكيات دون إنشاء مشروع Firebase
  • أمان أقوى ، نظرًا لأنه إذا كان الرمز الخاص بك يستدعي عن طريق الخطأ موارد (إنتاج) غير محاكية ، فلا توجد فرصة لتغيير البيانات والاستخدام والفوترة
  • دعم أفضل في وضع عدم الاتصال ، حيث لا توجد حاجة للوصول إلى الإنترنت لتنزيل تكوين SDK الخاص بك.

صك تطبيقك للتحدث مع المحاكيات

تطبيقات Android و iOS و Web SDK

قم بإعداد التكوين داخل التطبيق أو فئات الاختبار للتفاعل مع محاكي التخزين السحابي على النحو التالي.

ذكري المظهر
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
iOS - سويفت
Storage.storage().useEmulator(withHost:"localhost", port:9199)
الويب v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
الويب الإصدار 9 (تجريبي)
import { getStorage, useStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 9199);

ليس هناك حاجة إلى إعداد إضافي لاختبار وظائف السحب الناجمة عن الأحداث سحابة التخزين باستخدام المحاكي. عند تشغيل كلا من محاكيات Cloud Storage و Cloud Functions ، فإنهما يعملان معًا تلقائيًا.

SDKs للمشرف

المشرف تطوير البرامج Firebase الاتصال تلقائيا إلى محاكي سحابة التخزين عندما FIREBASE_STORAGE_EMULATOR_HOST تم تعيين متغير البيئة:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

لاحظ أن محاكي Cloud Functions يدرك تلقائيًا محاكي Cloud Storage حتى تتمكن من تخطي هذه الخطوة عند اختبار التكامل بين وظائف السحابة ومحاكيات التخزين السحابي. سيتم تعيين متغير البيئة تلقائيًا لـ Admin SDK في Cloud Storage.

عند الاتصال بمحاكي Cloud Storage من أي بيئة أخرى ، ستحتاج إلى تحديد معرّف المشروع. يمكنك تمرير ID مشروع ل initializeApp مباشرة أو تعيين GCLOUD_PROJECT متغير البيئة. لاحظ أنك لست بحاجة إلى استخدام معرف مشروع Firebase الحقيقي ؛ والمضاهاة سحابة التخزين قبول أي معرف المشروع، طالما أن لديها شكل صحيح .

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغيرات البيئة
export GCLOUD_PROJECT="your-project-id"

استيراد وتصدير البيانات

تسمح لك محاكيات قاعدة البيانات والتخزين السحابي بتصدير البيانات من مثيل محاكي قيد التشغيل. حدد مجموعة أساسية من البيانات لاستخدامها في اختبارات الوحدة الخاصة بك أو مهام سير عمل التكامل المستمر ، ثم قم بتصديرها لمشاركتها بين الفريق.

firebase emulators:export ./dir

في الاختبارات ، عند بدء تشغيل المحاكي ، قم باستيراد البيانات الأساسية.

firebase emulators:start --import=./dir

يمكنك إرشاد المحاكي لتصدير البيانات على الاغلاق، إما تحديد مسار التصدير أو ببساطة عن طريق استخدام مسار تمريرها إلى --import العلم.

firebase emulators:start --import=./dir --export-on-exit

تعمل هذه الخيارات استيراد وتصدير البيانات مع firebase emulators:exec قيادة أيضا. لمزيد من المعلومات، يرجى الرجوع إلى المرجع قيادة منافس .

كيف يختلف محاكي التخزين السحابي عن الإنتاج

لاختبار تطبيقات العميل ، يتوافق محاكي التخزين السحابي مع الإنتاج بشكل مثالي تقريبًا فيما يتعلق بمنطقة سطح Firebase API. من المتوقع أن تعمل جميع أوامر Firebase بين حزم Firebase SDK العادية (الويب و Android و iOS).

لاختبار التطبيقات من جانب الخادم ، توجد قيود. تستخدم تطبيقات Firebase Admin SDK سطح Google Cloud API ، ولا تتم محاكاة جميع نقاط النهاية لواجهة برمجة التطبيقات هذه. كقاعدة عامة ، يتم أيضًا تنفيذ أي شيء يمكن القيام به من حزم SDK للعميل (تحميل الملفات أو حذفها ، والحصول على البيانات الوصفية وتعيينها) للاستخدام من حزم SDK الخاصة بالمسؤول ، ولكن لا يتم تنفيذ أي شيء يتجاوز ذلك. الاستثناءات البارزة مذكورة أدناه.

سحابة IAM

لا يحاول Firebase Emulator Suite تكرار أو احترام أي سلوك متعلق بـ IAM للتشغيل. تلتزم المحاكيات بقواعد أمان Firebase المقدمة ، ولكن في الحالات التي يتم فيها استخدام IAM عادةً ، على سبيل المثال لتعيين وظائف السحابة التي تستدعي حساب الخدمة وبالتالي الأذونات ، فإن المحاكي غير قابل للتكوين وسيستخدم الحساب المتوفر عالميًا على جهاز المطور الخاص بك ، مشابه لتشغيل برنامج نصي محلي مباشرة.

إخطارات الحانة / الفرعية

لا يتكامل محاكي التخزين السحابي مع محاكي Cloud Pub / Sub وبالتالي لا يدعم إنشاء قنوات / إشعارات لتغييرات كائن التخزين. نوصي باستخدام مشغلات Cloud Functions Storage مباشرة.

البيانات الوصفية على مستوى الحاوية

لا يدعم محاكي Cloud Storage أي تكوين على مستوى الحاوية بما في ذلك فئة التخزين أو تكوين CORS على مستوى الحاوية أو الملصقات أو سياسات الاحتفاظ. يعتزم Firebase تحسين هذا الدعم بمرور الوقت.

ماذا بعد؟