قم بتوصيل تطبيقك وابدأ في إنشاء النماذج الأولية

قبل أن تقفز في مع المحاكي جناح Firebase المحلية، تأكد من أنك قمت بإنشاء مشروع Firebase، وإعداد بيئة التطوير الخاصة بك، واختيار وتثبيت Firebase تطوير البرامج النظام الأساسي الخاص بك وفقا لتبدأ مع الموضوعات Firebase النظام الأساسي الخاص بك: دائرة الرقابة الداخلية ، الروبوت أو الويب .

النموذج والاختبار

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

التفاعل بين Firebase dstabase ومحاكيات الوظائف
قاعدة بيانات وظائف سحابة محاكاة كجزء من المحاكي جناح المحلي الكامل .

بالنسبة لهذا الموضوع ، لتقديم سير عمل Local Emulator Suite ، دعنا نفترض أنك تعمل على تطبيق يستخدم مجموعة نموذجية من المنتجات: قاعدة بيانات Firebase ووظائف السحابة التي يتم تشغيلها بواسطة العمليات على قاعدة البيانات هذه.

بعد أن تقوم بتهيئة مشروع Firebase محليًا ، ستتضمن دورة التطوير باستخدام Local Emulator Suite عادةً ثلاث خطوات:

  1. يتميز النموذج الأولي بشكل تفاعلي مع المحاكيات وواجهة مستخدم Emulator Suite.

  2. إذا كنت تستخدم محاكي قاعدة بيانات أو محاكي Cloud Functions ، فقم بتنفيذ خطوة لمرة واحدة لتوصيل تطبيقك بالمحاكيات.

  3. قم بأتمتة اختباراتك باستخدام المحاكيات والبرامج النصية المخصصة.

تهيئة مشروع Firebase محليًا

تأكد من تثبيت CLI أو التحديث إلى الإصدار الأخير .

curl -sL firebase.tools | bash

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

firebase init

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

النموذج الأولي بشكل تفاعلي

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

باستخدام Emulator Suite UI ، يمكنك تكرار تصميم قاعدة بيانات ، وتجربة تدفقات بيانات مختلفة تتضمن وظائف سحابية ، وتقييم تغييرات قواعد الأمان ، والتحقق من السجلات لتأكيد أداء خدماتك الخلفية ، والمزيد. بعد ذلك ، إذا كنت تريد البدء من جديد ، فما عليك سوى مسح قاعدة البيانات الخاصة بك والبدء من جديد بفكرة تصميم جديدة.

كل ذلك متاح عند بدء Local Emulator Suite بـ:

firebase emulators:start

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

  1. إنشاء دالة سحابة سببها يكتب قاعدة البيانات عن طريق تحرير functions/index.js الملف في دليل المشروع الخاص بك. استبدل محتويات الملف الموجود بالمقتطف التالي. هذه يستمع وظيفة لإجراء تغييرات على وثائق في messages جمع وتحويل محتويات الوثيقة original الحقل إلى أحرف كبيرة، ومخازن النتيجة في تلك الوثيقة من uppercase المجال.
  2.   const functions = require('firebase-functions');
    
      exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. إطلاق المحاكي جناح المحلية مع firebase emulators:start . تبدأ وظائف السحابة ومحاكيات قواعد البيانات ، ويتم تكوينها تلقائيًا للعمل البيني.
  4. عرض واجهة المستخدم في المتصفح في http://localhost:4000 . المنفذ 4000 هو الإعداد الافتراضي لواجهة المستخدم ، ولكن تحقق من إخراج الرسائل الطرفية بواسطة Firebase CLI. لاحظ حالة المحاكيات المتاحة. في حالتنا ، سيتم تشغيل وظائف السحابة ومحاكيات Cloud Firestore.
    صورتي
  5. في واجهة المستخدم، على علامة التبويب Firestore، على علامة التبويب الفرعية البيانات، انقر فوق ابدأ، جمع اتبع المطالبات لإنشاء مستند جديد في messages المجموعة، مع FIELDNAME original وقيمة test . يؤدي هذا إلى تشغيل وظيفة السحابة لدينا. لاحظ أن الجديد uppercase الحقل يبدو قريبا، يسكنها مع السلسلة "اختبار".
    صورتيصورتي
  6. على Firestore> الطلبات التبويب، ودراسة الطلبات المقدمة لقاعدة بيانات يحتذى الخاص بك، بما في ذلك جميع التقييمات قواعد الأمن Firebase أداء كجزء من الوفاء بتلك الطلبات.
  7. تحقق علامة التبويب سجلات لتأكيد وظيفة الخاص بك لم تصل الى أخطاء كما تحديث قاعدة البيانات.

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

قم بتوصيل تطبيقك بالمحاكيات

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

تذكر أن Local Emulator Suite هي أداة تطوير محلية. لن تؤدي عمليات الكتابة إلى قواعد بيانات الإنتاج الخاصة بك إلى تشغيل الوظائف التي تقوم بعمل نماذج أولية لها محليًا.

للتبديل إلى جعل تطبيقك يكتب عمليات الكتابة إلى قاعدة البيانات ، ستحتاج إلى توجيه فصول الاختبار أو التكوين داخل التطبيق إلى محاكي Cloud Firestore.

ذكري المظهر
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFirestore firestore = FirebaseFirestore.getInstance();
        firestore.useEmulator("10.0.2.2", 8080);

        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setPersistenceEnabled(false)
                .build();
        firestore.setFirestoreSettings(settings);
iOS - سويفت
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

إصدار الويب 9

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

إصدار الويب 8

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}
الويب
// Initialize your Web app as described in the Get started for Web
// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

أتمتة اختباراتك باستخدام البرامج النصية المخصصة

الآن بالنسبة لخطوة سير العمل الإجمالية الأخيرة. بمجرد الانتهاء من وضع نموذج أولي لميزتك داخل التطبيق وتبدو واعدة على جميع الأنظمة الأساسية الخاصة بك ، يمكنك الانتقال إلى التنفيذ والاختبار النهائيين. لاختبار وحدة وCI سير العمليات، ويمكنك البدء في محاكاة، تشغيل الاختبارات كتابتها، واغلاق محاكاة في مكالمة واحدة مع exec الأوامر:

firebase emulators:exec "./testdir/test.sh"

استكشف المحاكيات الفردية بمزيد من العمق

الآن بعد أن رأيت كيف يبدو سير العمل الأساسي من جانب العميل ، يمكنك متابعة التفاصيل حول المحاكيات الفردية في Suite ، بما في ذلك كيفية استخدامها لتطوير التطبيقات من جانب الخادم:

ماذا بعد؟

تأكد من قراءة الموضوعات المتعلقة بمحاكيات محددة مرتبطة أعلاه. ثم: