حزمة القواعد-unit-testing

الدوال

دالة الوصف
assertFails(pr) التأكيد على رفض الوعد بعبارة "تم رفض الإذن" خطأ.يفيد ذلك في تأكيد رفض طلب معيَّن بواسطة "قواعد الأمان". انظر المثال أدناه. تتعرّف هذه الدالة على أخطاء رفض الأذونات من حِزم تطوير البرامج (SDK) لـ Database وFirestore وStorage JS.
assertSucceeds(pr) التأكيد على رفض الوعد بعبارة "تم رفض الإذن" error.هذه دالة غير عملية تعرض الوعد الذي تم تمريره كما هو، ولكن يمكن استخدامها لأغراض مستندات في رمز الاختبار للتأكيد على أن طلب معين يجب أن ينجح (على سبيل المثال، تسمح به القواعد).
InitializeTestEnvironment(config) يؤدي هذا الخيار إلى إعداد بيئة اختبار لاختبار وحدة القواعد. عليك استدعاء هذه الدالة أولاً لإعداد الاختبار.يتطلب ذلك تشغيل أدوات المحاكاة. تحاول هذه الدالة اكتشاف أدوات المحاكاة هذه عبر متغيرات البيئة أو من خلال مركز Firebase Emulator في حال عدم تحديد المضيفين والمنافذ. ننصح بشدة بتحديد قواعد الأمان لأدوات المحاكاة المستخدمة للاختبار. اطّلِع على المثال المبسَّط أدناه.
withFunctionTriggersDisabled(fn) تشغيل إحدى وظائف الإعداد مع إيقاف مشغِّلات دوال السحابة الإلكترونية في الخلفية ويمكن استخدام ذلك لاستيراد البيانات إلى قاعدة البيانات في الوقت الفعلي أو محاكي Cloud Firestore بدون تفعيل دوال Cloud التي تتم محاكاتها محليًا.لا تعمل هذه الطريقة إلا مع الإصدار 8.13.0 من واجهة سطر الأوامر Firebase أو الإصدارات الأحدث. لا يعمل هذا التحميل الزائد إلا إذا تم تحديد منفذ مضيف محور المحاكي من خلال متغير البيئة FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled(hub, fn) تشغيل إحدى وظائف الإعداد مع إيقاف مشغِّلات دوال السحابة الإلكترونية في الخلفية ويمكن استخدام ذلك لاستيراد البيانات إلى قاعدة البيانات في الوقت الفعلي أو محاكي Cloud Firestore بدون تفعيل دوال Cloud التي تتم محاكاتها محليًا.لا تعمل هذه الطريقة إلا مع الإصدار 8.13.0 من واجهة سطر الأوامر Firebase أو الإصدارات الأحدث. يجب أن يكون مركز المحاكي قيد التشغيل، أي المضيف والمنفذ اللذين تم تحديدهما في هذا الحمل الزائد.

واجهات

الواجهة الوصف
HostAndPort كائن يحتوي على اسم المضيف ورقم المنفذ للمحاكي
RulesTestContext سياق اختبار يمثّل العميل ويمكن استخدامها للوصول إلى المحاكيات لاختبار وحدات القواعد.
RulesTestEnvironment كائن يُستخدَم للتحكّم في بيئة اختبار وحدات القواعد يمكن استخدامها لإنشاء RulesTestContext لحالات المصادقة المختلفة.
TestEnvironmentConfig ضبط بيئة اختبار الوحدة، بما في ذلك أدوات المحاكاة.

كتابة العناوين البديلة للبريد الإلكتروني

اكتب العنوان البديل للبريد الإلكتروني الوصف
EmulatorConfig ثم ضبط الإعدادات لمحاكي معيّن.
TokenOptions مزيد من الخيارات للرمز المميّز الزائف للمستخدم بغرض الاختبار، بما في ذلك المطالبات المخصّصة التي يحدّدها المطوِّر أو عمليات الإلغاء الاختيارية لحمولات البيانات الأساسية للرمز المميّز لمصادقة Firebase

تأكيدFails()

التأكيد على رفض الوعد بعبارة "تم رفض الإذن" خطأ.

يفيد ذلك في تأكيد رفض طلب معيَّن بواسطة قواعد الأمان. انظر المثال أدناه. تتعرّف هذه الدالة على أخطاء رفض الأذونات من حِزم تطوير البرامج (SDK) لـ Database وFirestore وStorage JS.

Signature:

export declare function assertFails(pr: Promise<any>): Promise<any>;

المَعلمات

المعلمة النوع الوصف
PR تقديم وعود<any> بالوعد الذي سيتم تأكيده

المرتجعات:

تقديم وعود<any>

الوعد الذي يتم الوفاء به إذا تم رفض الإعلان مع "تم رفض الإذن". إذا تم رفض PR مع حدوث أي خطأ آخر أو تم حلّه، يتم رفض الوعد الذي تم إرجاعه.

مثال

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

تأكيدSucceeds()

التأكيد على الوعد بالنجاح.

هذه دالة No-op تعرض الوعد الذي تم تمريره كما هو، ولكن يمكن استخدامها لأغراض التوثيق في رمز الاختبار للتأكيد على نجاح طلب معين (على سبيل المثال، تسمح به القواعد).

Signature:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

المَعلمات

المعلمة النوع الوصف
PR وعود<T>

المرتجعات:

وعود<T>

مثال

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

startizeTestEnvironment()

يؤدي هذا الخيار إلى إعداد بيئة اختبار لاختبار وحدة القواعد. عليك استدعاء هذه الوظيفة أولاً لإعداد الاختبار.

يتطلب تشغيل المحاكيات. تحاول هذه الدالة اكتشاف أدوات المحاكاة هذه عبر متغيرات البيئة أو من خلال مركز Firebase Emulator في حال عدم تحديد المضيفين والمنافذ. ننصح بشدة بتحديد قواعد الأمان لأدوات المحاكاة المستخدمة للاختبار. اطّلِع على المثال المبسَّط أدناه.

Signature:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

المَعلمات

المعلمة النوع الوصف
config TestEnvironmentConfig والتهيئة للمحاكيات. تكون معظم الحقول اختيارية إذا كان من الممكن اكتشافها.

المرتجعات:

وعود<RulesTestEnvironment>

وعد يتم حله مع بيئة جاهزة للاختبار، أو يتم رفضه عن طريق الخطأ.

مثال

const testEnv = await initializeTestEnvironment({
  firestore: {
    rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
    // host and port can be omitted if they can be discovered from the hub.
  },
  // ...
});

withFunctionTriggersDisabled()

تشغيل إحدى وظائف الإعداد مع إيقاف مشغِّلات دوال السحابة الإلكترونية في الخلفية ويمكن استخدام ذلك لاستيراد البيانات إلى قاعدة بيانات الوقت الفعلي أو محاكي Cloud Firestore بدون تشغيل دوال Cloud التي تتم محاكاتها على الجهاز.

لا تعمل هذه الطريقة إلا مع الإصدار 8.13.0 من واجهة سطر الأوامر في Firebase أو الإصدارات الأحدث. لا يعمل هذا التحميل الزائد إلا إذا تم تحديد منفذ مضيف محور المحاكي من خلال متغير البيئة FIREBASE_EMULATOR_HUB.

Signature:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

المَعلمات

المعلمة النوع الوصف
fn () => TResult | وعد<TResult> دالة قد تكون متزامنة أو غير متزامنة (تعرض وعدًا)

المرتجعات:

وعد<TResult>

withFunctionTriggersDisabled()

تشغيل إحدى وظائف الإعداد مع إيقاف مشغِّلات دوال السحابة الإلكترونية في الخلفية ويمكن استخدام ذلك لاستيراد البيانات إلى قاعدة بيانات الوقت الفعلي أو محاكي Cloud Firestore بدون تشغيل دوال Cloud التي تتم محاكاتها على الجهاز.

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

Signature:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

المَعلمات

المعلمة النوع الوصف
موزّع { host: string; المنفذ: رقم؛ } مضيف ومنفذ "مركز المحاكي" (على سبيل المثال: {host: 'localhost', port: 4400})
fn () => TResult | وعد<TResult> دالة قد تكون متزامنة أو غير متزامنة (تعرض وعدًا)

المرتجعات:

وعد<TResult>

إعدادات EmulatorConfig

ثم ضبط الإعدادات لمحاكي معيّن.

Signature:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

TokenOptions

مزيد من الخيارات للرمز المميّز الزائف للمستخدم بغرض الاختبار، بما في ذلك المطالبات المخصّصة التي يحدّدها المطوِّر أو عمليات الإلغاء الاختيارية لحمولات البيانات الأساسية للرمز المميّز لمصادقة Firebase

Signature:

export declare type TokenOptions = {
    iat?: number;
    exp?: number;
    auth_time?: number;
    provider_id?: 'anonymous';
    email?: string;
    email_verified?: boolean;
    phone_number?: string;
    name?: string;
    picture?: string;
    firebase?: {
        sign_in_provider: FirebaseSignInProvider;
        identities?: {
            [provider in FirebaseSignInProvider]?: string[];
        };
    };
    aud?: string;
    iss?: string;
    [claim: string]: unknown;
    uid?: never;
    sub?: never;
    user_id?: never;
};