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 Functions Emulator

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

اختر مشروع Firebase

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

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

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

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

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

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

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

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

تجريبي

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

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

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

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

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

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

صك تطبيقك للوظائف القابلة للاستدعاء

إذا تنطوي على أنشطتك النموذج واختبار وظائف الخلفية للاستدعاء ، والتفاعل مع تكوين وظائف الغيمة لFirebase المحاكي مثل هذا:

ذكري المظهر
        // 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);
iOS - سويفت
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

إصدار الويب 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

إصدار الويب 8

firebase.functions().useEmulator("localhost", 5001);

صك تطبيقك لمحاكاة وظائف HTTPS

سيتم تقديم كل وظيفة HTTPS في التعليمات البرمجية الخاصة بك من المحاكي المحلي باستخدام تنسيق عنوان URL التالي:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

على سبيل المثال بسيط helloWorld يمكن أن يتحقق وظيفة مع الميناء المضيف الافتراضي والمنطقة على:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

صك تطبيقك لمضاهاة الوظائف التي يتم تشغيلها في الخلفية

يدعم محاكي وظائف السحابة الوظائف التي يتم تشغيلها في الخلفية من المصادر التالية:

  • محاكي Realtime Database
  • محاكي Cloud Firestore
  • محاكي المصادقة
  • محاكي Pub / Sub

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

ما هي الأدوات الأخرى الموجودة لاختبار وظائف السحابة؟

يتم استكمال محاكي Cloud Functions بنماذج أولية وأدوات اختبار أخرى:

  • هيكل وظائف السحابة ، والذي يسمح بالنماذج الأولية والوظائف التكرارية التفاعلية وتطويرها. تستخدم القشرة محاكي وظائف السحابة بواجهة REPL للتطوير. لا يوجد تكامل مع محاكيات Cloud Firestore أو Realtime Database. باستخدام shell ، يمكنك محاكاة البيانات وإجراء استدعاءات وظيفية لمحاكاة التفاعل مع المنتجات التي لا تدعمها Local Emulator Suite حاليًا: التخزين السحابي ، و Pub / Sub ، والتحليلات ، والتكوين عن بُعد ، والتخزين ، والمصادقة ، و Crashlytics.
  • Firebase Test SDK لوظائف السحابة ، Node.js مع إطار عمل mocha لتطوير الوظائف. في الواقع ، توفر SDK لاختبار وظائف السحابة أتمتة أعلى هيكل وظائف السحابة.

يمكنك العثور على مزيد من المعلومات حول وظائف السحب قذيفة وظائف سحابة اختبار SDK في وظائف اختبار تفاعلي و حدة اختبار من وظائف الغيمة .

كيف يختلف محاكي وظائف السحابة عن الإنتاج

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

سحابة IAM

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

قيود الذاكرة والمعالج

لا يفرض المحاكي قيودًا على الذاكرة أو المعالج لوظائفك. ومع ذلك، فإن المحاكي لا دعم توقيت وظائف عن طريق timeoutSeconds وقت حجة.

لاحظ أن وقت تنفيذ الوظيفة قد يختلف عن الإنتاج عند تشغيل الوظائف في المحاكي. نوصي بعد تصميم الوظائف واختبارها باستخدام المحاكي ، بإجراء اختبارات محدودة في الإنتاج لتأكيد أوقات التنفيذ.

التخطيط للاختلافات في البيئة المحلية والإنتاجية

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

اعلم أن بيئتك المحلية لتطوير الوظائف قد تختلف عن بيئة إنتاج Google:

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

  • وبالمثل، الذي بني في المرافق العامة (على سبيل المثال، الأوامر قذيفة مثل ls ، mkdir ) قد تختلف عن الإصدارات المتوفرة في الإنتاج، وخاصة إذا كنت مطورا في غير لينكس للبيئة (على سبيل المثال، ماك). يمكنك معالجة هذه المشكلة باستخدام بدائل Node-only للأوامر الأصلية ، أو عن طريق إنشاء ثنائيات Linux لتتوافق مع النشر الخاص بك.

إعادة المحاولة

لا يدعم محاكي وظائف السحابة وظائف إعادة المحاولة عند الفشل.

ماذا بعد؟