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

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

یک پروژه Firebase را انتخاب کنید

مجموعه شبیه ساز محلی Firebase محصولات را برای یک پروژه Firebase تقلید می کند.

برای انتخاب پروژه مورد استفاده، قبل از شروع شبیه سازها، در CLI firebase use . یا، می توانید پرچم --project را به هر فرمان شبیه ساز ارسال کنید.

Local Emulator Suite از شبیه سازی پروژه های Firebase واقعی و پروژه های آزمایشی پشتیبانی می کند.

نوع پروژه امکانات با شبیه سازها استفاده کنید
واقعی

یک پروژه Firebase واقعی پروژه ای است که شما ایجاد و پیکربندی کرده اید (به احتمال زیاد از طریق کنسول Firebase).

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

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

برای هر محصولی که شبیه‌سازی نمی‌کنید، برنامه‌ها و کد شما با منبع زنده (نمونه پایگاه داده، سطل ذخیره‌سازی، عملکرد و غیره) تعامل خواهند داشت.

نسخه ی نمایشی

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

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

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

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

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

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

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

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

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 modular API

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 namespaced API

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 هر دو در حال اجرا هستند، به طور خودکار با هم کار می کنند.

SDK های مدیریت

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

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"

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

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

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 modular API

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 namespaced API

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

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

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

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

پایگاه داده و شبیه سازهای Cloud Storage برای 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>

بعدش چی؟