برنامه خود را به شبیه ساز پایگاه داده بیدرنگ متصل کنید

قبل از اتصال برنامه خود به شبیه‌ساز Realtime Database ، مطمئن شوید که گردش کار مجموعه محلی 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 واقعی و هیچ منبع زنده ای ندارد. این پروژه ها معمولاً از طریق نرم افزارهای کد یا آموزش های دیگر قابل دسترسی هستند.

شناسه های پروژه برای پروژه های نمایشی دارای پیشوند demo- هستند.

هنگام کار با پروژه های Firebase آزمایشی، برنامه ها و کد شما فقط با شبیه سازها تعامل دارند. اگر برنامه شما سعی کند با منبعی که شبیه ساز برای آن اجرا نمی شود تعامل داشته باشد، آن کد با شکست مواجه می شود.

توصیه می کنیم تا جایی که امکان دارد از پروژه های نمایشی استفاده کنید. مزایا عبارتند از:

  • راه اندازی آسان تر، زیرا می توانید شبیه سازها را بدون ایجاد پروژه Firebase اجرا کنید
  • ایمنی قوی تر، زیرا اگر کد شما به طور تصادفی منابع غیر شبیه سازی شده (تولید) را فراخوانی کند، هیچ شانسی برای تغییر داده ها، استفاده و صورتحساب وجود ندارد.
  • پشتیبانی آفلاین بهتر است، زیرا برای دانلود پیکربندی SDK نیازی به دسترسی به اینترنت نیست.

برنامه خود را برای صحبت با شبیه سازها ابزار کنید

پلتفرم‌های اندروید، اپل و وب SDK

پیکربندی درون‌برنامه یا کلاس‌های آزمایشی خود را برای تعامل با Realtime Database به شرح زیر تنظیم کنید.

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 database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
سویفت
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")

Web

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "127.0.0.1", 9000);
} 

Web

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

برای آزمایش توابع ابری که توسط رویدادهای پایگاه داده بیدرنگ با استفاده از شبیه ساز راه اندازی می شوند ، نیازی به تنظیم اضافی نیست. هنگامی که شبیه سازهای پایگاه داده Realtime و Cloud Functions هر دو در حال اجرا هستند، به طور خودکار با هم کار می کنند.

Admin SDK s

هنگامی که متغیر محیطی FIREBASE_DATABASE_EMULATOR_HOST تنظیم شده باشد، Firebase Admin SDK به طور خودکار به شبیه ساز Realtime Database متصل می شود:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

اگر کد شما در داخل شبیه ساز Cloud Functions اجرا می شود، شناسه پروژه و سایر تنظیمات به طور خودکار هنگام فراخوانی initializeApp تنظیم می شود.

اگر می‌خواهید کد Admin SDK شما به یک شبیه‌ساز مشترک که در محیط دیگری اجرا می‌شود متصل شود، باید همان ID پروژه‌ای را که با استفاده از Firebase CLI تنظیم کرده‌اید، مشخص کنید. می‌توانید یک شناسه پروژه را برای initializeApp به طور مستقیم ارسال کنید یا متغیر محیطی GCLOUD_PROJECT را تنظیم کنید.

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغیر محیطی
export GCLOUD_PROJECT="your-project-id"

پایگاه داده خود را بین تست ها پاک کنید

برای شستشوی Realtime Database بین فعالیت ها، می توانید مرجع پایگاه داده را پاک کنید. شما می توانید از این رویکرد به عنوان جایگزینی برای خاموش کردن فرآیند شبیه ساز استفاده کنید.

Kotlin+KTX
// With a DatabaseReference, write null to clear the database.
database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
سویفت
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

طبیعتاً، کد شما باید منتظر تأیید باشد که با استفاده از ویژگی‌های مدیریت رویداد ناهمزمان پلتفرم شما، فلاش به پایان رسیده یا ناموفق است.

با اجرای مرحله‌ای مانند این، می‌توانید تست‌های خود را ترتیب داده و عملکردهای خود را با اطمینان از پاک شدن داده‌های قدیمی بین اجراها و استفاده از یک پیکربندی آزمایشی پایه جدید، راه‌اندازی کنید.

واردات و صادرات داده ها

پایگاه داده و شبیه سازهای Cloud Storage for Firebase به شما امکان می دهند داده ها را از یک نمونه شبیه ساز در حال اجرا صادر کنید. مجموعه‌ای از داده‌ها را برای استفاده در آزمایش‌های واحد یا گردش‌های کاری پیوسته یکپارچه تعریف کنید، سپس آن‌ها را صادر کنید تا بین تیم به اشتراک گذاشته شود.

firebase emulators:export ./dir

در آزمایش‌ها، هنگام راه‌اندازی شبیه‌ساز، داده‌های پایه را وارد کنید.

firebase emulators:start --import=./dir

می‌توانید به شبیه‌ساز دستور دهید در هنگام خاموش شدن، داده‌ها را صادر کند، یا یک مسیر صادراتی را مشخص کنید یا به سادگی با استفاده از مسیر ارسال شده به پرچم --import .

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

این گزینه های واردات و صادرات داده ها با فرمان firebase emulators:exec نیز کار می کنند. برای اطلاعات بیشتر به مرجع فرمان شبیه ساز مراجعه کنید.

فعالیت قوانین امنیتی را تجسم کنید

همانطور که از طریق نمونه اولیه و حلقه های آزمایشی کار می کنید، می توانید از ابزارهای تجسم و گزارش های ارائه شده توسط Local Emulator Suite استفاده کنید.

ارزیابی قوانین را تجسم کنید

همانطور که قوانین امنیتی را به نمونه اولیه خود اضافه می کنید، می توانید آنها را با ابزارهای Local Emulator Suite اشکال زدایی کنید.

پس از اجرای مجموعه‌ای از تست‌ها، می‌توانید به گزارش‌های پوشش آزمون دسترسی داشته باشید که نشان می‌دهد هر یک از قوانین شما چگونه ارزیابی شده است. برای دریافت گزارش‌ها، در حین اجرای شبیه‌ساز، یک نقطه پایانی در معرض نمایش را جستجو کنید. برای یک نسخه مرورگر پسند، از URL زیر استفاده کنید:

http://localhost:9000/.inspect/coverage?ns=<database_name>

این قوانین شما را به عبارات و عبارات فرعی تبدیل می کند که می توانید برای اطلاعات بیشتر، از جمله تعداد اجراها و مقادیر برگردانده شده، ماوس را روی آنها قرار دهید. برای نسخه خام JSON این داده، URL زیر را در جستار خود قرار دهید:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

بعدش چی؟