تست های واحد بسازید

Firebase Local Emulator Suite اعتبارسنجی کامل ویژگی‌ها و رفتار برنامه شما را آسان‌تر می‌کند. همچنین یک ابزار عالی برای تأیید پیکربندی Firebase Security Rules شما است. از شبیه سازهای Firebase برای اجرا و خودکارسازی تست های واحد در یک محیط محلی استفاده کنید. روش‌های ذکر شده در این سند باید به شما در ساختن و خودکارسازی آزمایش‌های واحد برای برنامه‌تان کمک کند که Rules شما را تأیید می‌کند.

اگر قبلاً این کار را نکرده‌اید، شبیه‌سازهای Firebase را راه‌اندازی کنید .

قبل از اجرای شبیه ساز

قبل از شروع استفاده از شبیه ساز، موارد زیر را در نظر داشته باشید:

  • شبیه ساز ابتدا قوانین مشخص شده در فیلد firestore.rules یا "storage.rules" فایل firebase.json شما را بارگیری می کند. اگر فایل وجود نداشته باشد و از روش loadFirestoreRules یا 'loadStorageRules' همانطور که در زیر توضیح داده شده است استفاده نکنید، شبیه ساز همه پروژه ها را دارای قوانین باز تلقی می کند.
  • در حالی که اکثر SDKهای Firebase مستقیماً با شبیه‌سازها کار می‌کنند، فقط کتابخانه @firebase/rules-unit-testing auth تمسخر آمیز در قوانین امنیتی پشتیبانی می‌کند و آزمایش‌های واحد را بسیار آسان‌تر می‌کند. علاوه بر این، کتابخانه از چند ویژگی خاص شبیه ساز مانند پاک کردن همه داده ها، همانطور که در زیر فهرست شده است، پشتیبانی می کند.
  • شبیه سازها همچنین توکن های Firebase Auth تولیدی ارائه شده از طریق Client SDK را می پذیرند و قوانین را بر اساس آن ارزیابی می کنند، که اجازه می دهد برنامه شما را مستقیماً به شبیه سازها در یکپارچه سازی و آزمایش های دستی متصل کنید.

تفاوت بین شبیه ساز پایگاه داده و تولید

  • شما مجبور نیستید به طور صریح یک نمونه پایگاه داده ایجاد کنید. شبیه ساز به طور خودکار هر نمونه پایگاه داده ای را که به آن دسترسی داشته باشید ایجاد می کند.
  • هر پایگاه داده جدید با قوانین بسته شروع می شود، بنابراین کاربران غیر مدیر قادر به خواندن یا نوشتن نخواهند بود.
  • هر پایگاه داده شبیه سازی شده محدودیت ها و سهمیه های طرح Spark را اعمال می کند (به ویژه این که هر نمونه را به 100 اتصال همزمان محدود می کند).
  • هر پایگاه داده ای رشته "owner" را به عنوان یک نشانه اعتبار مدیریت می پذیرد.
  • شبیه سازها در حال حاضر تعامل کاری با سایر محصولات Firebase ندارند. قابل ذکر است، جریان عادی Firebase Authentication کار نمی کند. در عوض، می‌توانید از متد initializeTestApp() در کتابخانه rules-unit-testing استفاده کنید که یک فیلد auth می‌گیرد. شی Firebase ایجاد شده با استفاده از این روش به گونه ای رفتار می کند که گویی با موفقیت به عنوان هر موجودی که ارائه می کنید احراز هویت شده است. اگر null را پاس کنید، مانند یک کاربر احراز هویت نشده رفتار می کند (مثلاً auth != null با شکست مواجه می شوند).

تعامل با شبیه ساز Realtime Database

نمونه تولیدی Firebase Realtime Database در زیر دامنه firebaseio.com قابل دسترسی است، و می‌توانید به api REST مانند این دسترسی داشته باشید:

https://<database_name>.firebaseio.com/path/to/my/data.json

شبیه ساز به صورت محلی اجرا می شود و در localhost:9000 موجود است. برای تعامل با یک نمونه پایگاه داده خاص، باید از پارامتر query ns برای تعیین نام پایگاه داده استفاده کنید.

http://localhost:9000/path/to/my/data.json?ns=<database_name>

تست های واحد محلی را با نسخه 9 JavaScript SDK اجرا کنید

Firebase یک کتابخانه تست واحد قوانین امنیتی را با نسخه 9 JavaScript SDK و نسخه 8 SDK خود توزیع می کند. APIهای کتابخانه به طور قابل توجهی متفاوت هستند. ما کتابخانه آزمایشی v9 را توصیه می‌کنیم که ساده‌تر است و برای اتصال به شبیه‌سازها به تنظیمات کمتری نیاز دارد و بنابراین از استفاده تصادفی از منابع تولید جلوگیری می‌کند. برای سازگاری به عقب، ما همچنان کتابخانه آزمایش v8 را در دسترس قرار می دهیم.

از ماژول @firebase/rules-unit-testing برای تعامل با شبیه ساز که به صورت محلی اجرا می شود استفاده کنید. اگر با وقفه زمانی یا خطاهای ECONNREFUSED مواجه شدید، دوباره بررسی کنید که شبیه ساز واقعاً در حال اجرا است.

ما قویاً توصیه می کنیم از نسخه اخیر Node.js استفاده کنید تا بتوانید از نماد async/await استفاده کنید. تقریباً تمام رفتارهایی که ممکن است بخواهید آزمایش کنید شامل توابع ناهمزمان است و ماژول تست برای کار با کد مبتنی بر Promise طراحی شده است.

کتابخانه v9 Rules Unit Testing همیشه از شبیه سازها آگاه است و هرگز منابع تولید شما را لمس نمی کند.

شما کتابخانه را با استفاده از دستورات واردات مدولار v9 وارد می کنید. به عنوان مثال:

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment
} from "@firebase/rules-unit-testing"

// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.

پس از وارد کردن، اجرای آزمایش های واحد شامل موارد زیر است:

  • ایجاد و پیکربندی RulesTestEnvironment با فراخوانی برای initializeTestEnvironment .
  • تنظیم داده‌های آزمایشی بدون راه‌اندازی Rules ، با استفاده از یک روش راحت که به شما امکان می‌دهد به طور موقت آنها را دور بزنید، RulesTestEnvironment.withSecurityRulesDisabled .
  • راه‌اندازی مجموعه آزمایشی و قلاب‌های هر آزمون قبل و بعد از آن با فراخوانی برای پاکسازی داده‌های آزمایش و محیط، مانند RulesTestEnvironment.cleanup() یا RulesTestEnvironment.clearFirestore() .
  • اجرای موارد آزمایشی که حالت‌های احراز هویت را با استفاده از RulesTestEnvironment.authenticatedContext و RulesTestEnvironment.unauthenticatedContext تقلید می‌کنند.

روش های رایج و توابع سودمند

همچنین روش‌های آزمایش مخصوص شبیه‌ساز را با استفاده از API مدولار ببینید.

initializeTestEnvironment() => RulesTestEnvironment

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

این تابع یک شی اختیاری را می پذیرد که TestEnvironmentConfig را تعریف می کند، که می تواند شامل شناسه پروژه و تنظیمات پیکربندی شبیه ساز باشد.

let testEnv = await initializeTestEnvironment({
  projectId: "demo-project-1234",
  firestore: {
    rules: fs.readFileSync("firestore.rules", "utf8"),
  },
});

RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext

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

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

// Assuming a Firestore app and the Firestore emulator for this example
import { setDoc } from "firebase/firestore";

const alice = testEnv.authenticatedContext("alice", { … });
// Use the Firestore instance associated with this context
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

RulesTestEnvironment.unauthenticatedContext() => RulesTestContext

این متد یک RulesTestContext ایجاد می کند که مانند کلاینت هایی عمل می کند که از طریق Authentication وارد نشده اند. درخواست‌هایی که از طریق زمینه بازگشتی ایجاد می‌شوند، نشانه‌های Firebase Auth را ضمیمه نخواهند کرد.

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

// Assuming a Cloud Storage app and the Storage emulator for this example
import { getStorage, ref, deleteObject } from "firebase/storage";

const alice = testEnv.unauthenticatedContext();

// Use the Cloud Storage instance associated with this context
const desertRef = ref(alice.storage(), 'images/desert.jpg');
await assertSucceeds(deleteObject(desertRef));

RulesTestEnvironment.withSecurityRulesDisabled()

یک تابع راه اندازی آزمایشی را با زمینه ای اجرا کنید که به گونه ای رفتار می کند که گویی قوانین امنیتی غیرفعال شده اند.

این متد یک تابع callback می گیرد که زمینه Security-Rules-bypassing را می گیرد و یک وعده را برمی گرداند. پس از رفع / رد قول، زمینه از بین می رود.

RulesTestEnvironment.cleanup()

این روش تمام RulesTestContexts ایجاد شده در محیط تست را از بین می برد و منابع زیربنایی را پاک می کند و اجازه خروج تمیز را می دهد.

این روش به هیچ وجه وضعیت شبیه سازها را تغییر نمی دهد. برای بازنشانی داده‌ها در بین آزمایش‌ها، از روش داده‌های شفاف مخصوص شبیه‌ساز برنامه استفاده کنید.

assertSucceeds(pr: Promise<any>)) => Promise<any>

این یک تابع ابزار مورد آزمایش است.

این تابع ادعا می‌کند که عملیات شبیه‌ساز Promise ارائه شده بدون نقض قوانین امنیتی حل خواهد شد.

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

این یک تابع ابزار مورد آزمایش است.

تابع ادعا می کند که Promise ارائه شده که یک عملیات شبیه ساز را بسته بندی می کند با نقض قوانین امنیتی رد خواهد شد.

await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });

روش های خاص شبیه ساز

همچنین روش‌های آزمایش رایج و توابع ابزار با استفاده از API مدولار را ببینید.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

این روش داده هایی را در پایگاه داده Firestore که به projectId پیکربندی شده برای شبیه ساز Firestore تعلق دارد پاک می کند.

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

این روش یک نمونه Firestore برای این زمینه آزمایشی دریافت می کند. نمونه Firebase JS Client SDK برگشتی را می توان با APIهای SDK کلاینت (v9 مدولار یا v9 compat) استفاده کرد.

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

این روش داده‌های Realtime Database را که به projectId پیکربندی شده برای شبیه‌ساز Realtime Database تعلق دارد، پاک می‌کند.

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

یک نمونه Realtime Database برای این زمینه آزمایشی دریافت کنید. نمونه Firebase JS Client SDK برگشتی را می توان با APIهای SDK کلاینت (مژولار یا فضای نام، نسخه 9 یا بالاتر) استفاده کرد. این روش یک URL از نمونه پایگاه داده Realtime را می پذیرد. اگر مشخص شده باشد، یک نمونه برای یک نسخه شبیه سازی شده از فضای نام با پارامترهای استخراج شده از URL برمی گرداند.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

این روش اشیاء و ابرداده ها را در سطل های ذخیره سازی متعلق به projectId پیکربندی شده برای شبیه ساز Cloud Storage پاک می کند.

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

این روش یک نمونه Storage را که برای اتصال به شبیه ساز پیکربندی شده است برمی گرداند. این روش یک gs:// url را در سطل ذخیره سازی Firebase برای آزمایش می پذیرد. اگر مشخص شده باشد، یک نمونه Storage را برای یک نسخه شبیه سازی شده از نام سطل برمی گرداند.

تست های واحد محلی را با v8 JavaScript SDK اجرا کنید

برای مشاهده روش‌هایی که Firebase Test SDK برای ارتباط با شبیه‌ساز استفاده می‌کند، محصولی را انتخاب کنید.

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

این روش یک برنامه Firebase مقداردهی اولیه را برمی گرداند که مطابق با ID پروژه و متغیر auth مشخص شده در گزینه ها است. از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

این روش یک برنامه Firebase مدیریت اولیه را برمی گرداند. این برنامه هنگام خواندن و نوشتن قوانین امنیتی را دور می زند. از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش ها استفاده کنید.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] این روش تمام برنامه‌های آزمایشی و مدیریت اولیه را برمی‌گرداند. از این برای پاکسازی برنامه ها بین یا بعد از آزمایش استفاده کنید.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

این روش قوانین را به یک پایگاه داده در حال اجرا محلی ارسال می کند. یک شی را می گیرد که قوانین را به عنوان یک رشته مشخص می کند. از این روش برای تنظیم قوانین پایگاه داده خود استفاده کنید.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

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

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

این روش قولی را برمی‌گرداند که در صورت موفقیت ورودی موفق است و در صورت رد شدن ورودی رد می‌شود. از این برای اثبات موفقیت در خواندن یا نوشتن پایگاه داده استفاده کنید.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

این روش تمام داده های مرتبط با یک پروژه خاص را در نمونه Firestore به صورت محلی پاک می کند. از این روش برای تمیز کردن پس از آزمایش استفاده کنید.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.

یک برنامه firebase اولیه مطابق با نام پایگاه داده و نادیده گرفتن متغیر auth مشخص شده در گزینه ها را برمی گرداند.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش استفاده کنید.

یک برنامه firebase مدیریت اولیه مطابق با نام پایگاه داده مشخص شده در گزینه ها را برمی گرداند. این برنامه هنگام خواندن و نوشتن در پایگاه داده قوانین امنیتی را دور می زند.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

از این برای تنظیم قوانین پایگاه داده خود استفاده کنید.

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

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

همه برنامه‌های آزمایشی و مدیریت اولیه‌شده فعلی را برمی‌گرداند.

از این برای پاکسازی برنامه‌ها بین یا بعد از آزمایش‌ها استفاده کنید (توجه داشته باشید که برنامه‌های اولیه با شنونده‌های فعال از خروج جاوا اسکریپت جلوگیری می‌کنند):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

وعده ای را برمی گرداند که در صورت موفقیت ورودی رد می شود و در صورت رد ورودی موفق می شود.

از این برای تأیید اینکه یک پایگاه داده خواندن یا نوشتن ناموفق است، استفاده کنید:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

قولی را برمی‌گرداند که در صورت موفقیت ورودی موفق شود و در صورت رد شدن ورودی رد می‌شود.

از این برای اثبات موفقیت آمیز خواندن یا نوشتن پایگاه داده استفاده کنید:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.

یک برنامه firebase اولیه مطابق با نام سطل ذخیره سازی و نادیده گرفتن متغیر تأیید مشخص شده در گزینه ها را برمی گرداند.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش استفاده کنید.

یک برنامه firebase مدیریت اولیه مطابق با نام سطل ذخیره‌سازی مشخص شده در گزینه‌ها را برمی‌گرداند. این برنامه هنگام خواندن و نوشتن در سطل قوانین امنیتی را دور می زند.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

از این برای تنظیم قوانین سطل ذخیره سازی خود استفاده کنید.

قوانین را به سطل های ذخیره سازی مدیریت شده محلی می فرستد. یک شی گزینه را می گیرد که "storageBucket" و "قوانین" شما را به عنوان رشته ها مشخص می کند.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

همه برنامه‌های آزمایشی و مدیریت اولیه‌شده فعلی را برمی‌گرداند.

از این برای پاکسازی برنامه‌ها بین یا بعد از آزمایش‌ها استفاده کنید (توجه داشته باشید که برنامه‌های اولیه با شنونده‌های فعال از خروج جاوا اسکریپت جلوگیری می‌کنند):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

وعده ای را برمی گرداند که در صورت موفقیت ورودی رد می شود و در صورت رد ورودی موفق می شود.

از این برای تأیید اینکه سطل ذخیره‌سازی خواندن یا نوشتن ناموفق است، استفاده کنید:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

قولی را برمی‌گرداند که در صورت موفقیت ورودی موفق شود و در صورت رد شدن ورودی رد می‌شود.

از این برای ادعای موفقیت آمیز خواندن یا نوشتن سطل ذخیره سازی استفاده کنید:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());

API کتابخانه RUT برای JS SDK v8

برای مشاهده روش‌هایی که Firebase Test SDK برای ارتباط با شبیه‌ساز استفاده می‌کند، محصولی را انتخاب کنید.

Cloud Firestore

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

این روش یک برنامه Firebase مقداردهی اولیه را برمی گرداند که مطابق با ID پروژه و متغیر auth مشخص شده در گزینه ها است. از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

این روش یک برنامه Firebase مدیریت اولیه را برمی گرداند. این برنامه هنگام خواندن و نوشتن قوانین امنیتی را دور می زند. از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش ها استفاده کنید.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] این روش تمام برنامه‌های آزمایشی و مدیریت اولیه را برمی‌گرداند. از این برای پاکسازی برنامه ها بین یا بعد از آزمایش استفاده کنید.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

این روش قوانین را به یک پایگاه داده در حال اجرا محلی ارسال می کند. یک شی را می گیرد که قوانین را به عنوان یک رشته مشخص می کند. از این روش برای تنظیم قوانین پایگاه داده خود استفاده کنید.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

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

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

این روش قولی را برمی‌گرداند که در صورت موفقیت ورودی موفق است و در صورت رد شدن ورودی رد می‌شود. از این برای اثبات موفقیت در خواندن یا نوشتن پایگاه داده استفاده کنید.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

این روش تمام داده های مرتبط با یک پروژه خاص را در نمونه Firestore به صورت محلی پاک می کند. از این روش برای تمیز کردن پس از آزمایش استفاده کنید.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.

یک برنامه firebase اولیه مطابق با نام پایگاه داده و نادیده گرفتن متغیر auth مشخص شده در گزینه ها را برمی گرداند.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش استفاده کنید.

یک برنامه firebase مدیریت اولیه مطابق با نام پایگاه داده مشخص شده در گزینه ها را برمی گرداند. این برنامه هنگام خواندن و نوشتن در پایگاه داده قوانین امنیتی را دور می زند.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

از این برای تنظیم قوانین پایگاه داده خود استفاده کنید.

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

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

همه برنامه‌های آزمایشی و مدیریت اولیه‌شده فعلی را برمی‌گرداند.

از این برای پاکسازی برنامه‌ها بین یا بعد از آزمایش‌ها استفاده کنید (توجه داشته باشید که برنامه‌های اولیه با شنونده‌های فعال از خروج جاوا اسکریپت جلوگیری می‌کنند):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

وعده ای را برمی گرداند که در صورت موفقیت ورودی رد می شود و در صورت رد ورودی موفق می شود.

از این برای تأیید اینکه یک پایگاه داده خواندن یا نوشتن ناموفق است، استفاده کنید:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

قولی را برمی‌گرداند که در صورت موفقیت ورودی موفق شود و در صورت رد شدن ورودی رد می‌شود.

از این برای اثبات موفقیت آمیز خواندن یا نوشتن پایگاه داده استفاده کنید:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.

یک برنامه firebase اولیه مطابق با نام سطل ذخیره سازی و نادیده گرفتن متغیر تأیید مشخص شده در گزینه ها را برمی گرداند.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش استفاده کنید.

یک برنامه firebase مدیریت اولیه مطابق با نام سطل ذخیره‌سازی مشخص شده در گزینه‌ها را برمی‌گرداند. این برنامه هنگام خواندن و نوشتن در سطل قوانین امنیتی را دور می زند.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

از این برای تنظیم قوانین سطل ذخیره سازی خود استفاده کنید.

قوانین را به سطل های ذخیره سازی مدیریت شده محلی می فرستد. یک شی گزینه را می گیرد که "storageBucket" و "قوانین" شما را به عنوان رشته ها مشخص می کند.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

همه برنامه‌های آزمایشی و مدیریت اولیه‌شده فعلی را برمی‌گرداند.

از این برای پاکسازی برنامه‌ها بین یا بعد از آزمایش‌ها استفاده کنید (توجه داشته باشید که برنامه‌های اولیه با شنونده‌های فعال از خروج جاوا اسکریپت جلوگیری می‌کنند):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

وعده ای را برمی گرداند که در صورت موفقیت ورودی رد می شود و در صورت رد ورودی موفق می شود.

از این برای تأیید اینکه سطل ذخیره‌سازی خواندن یا نوشتن ناموفق است، استفاده کنید:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

قولی را برمی‌گرداند که در صورت موفقیت ورودی موفق شود و در صورت رد شدن ورودی رد می‌شود.

از این برای ادعای موفقیت آمیز خواندن یا نوشتن سطل ذخیره سازی استفاده کنید:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());