kural birimi test paketi

Fonksiyonlar

İşlev Tanım
iddiaFails(pr) Taahhüdün "izin reddedildi" hatasıyla reddedileceğini iddia edin. Belirli bir isteğin Güvenlik Kuralları tarafından reddedileceğini ileri sürmek faydalıdır. Aşağıdaki örneğe bakın. Bu işlev Database, Firestore ve Storage JS SDK'larından gelen izin reddedilen hataları tanır.
iddiaSucceeds(pr) Taahhüdün "izin reddedildi" hatasıyla reddedileceğini iddia edin. Bu, iletilen vaadi olduğu gibi döndüren işlem dışı bir işlevdir, ancak belirli bir isteğin başarılı olması gerektiğini (örneğin, kurallar tarafından izin verilmesi) vurgulamak için test kodunda belgeleme amacıyla kullanılabilir.
BaşlatmaTestEnvironment(config) Kural birimi testi için bir test ortamı başlatır. Test kurulumu için önce bu işlevi çağırın. Emülatörlerin çalışmasını gerektirir. Bu işlev, bu emülatörleri ortam değişkenleri aracılığıyla veya ana bilgisayarlar ve bağlantı noktaları belirtilmemişse Firebase Emulator hub'ı aracılığıyla keşfetmeye çalışır. Test için kullanılan emülatörler için güvenlik kurallarının belirtilmesi önemle tavsiye edilir. Aşağıdaki minimal örneğe bakın.
withFunctionTriggersDisabled(fn) Arka plan Bulut İşlevleri tetikleyicileri devre dışıyken bir kurulum işlevi çalıştırın. Bu, yerel olarak öykünülmüş Bulut İşlevlerini tetiklemeden verileri Gerçek Zamanlı Veritabanına veya Cloud Firestore öykünücüsüne aktarmak için kullanılabilir. Bu yöntem yalnızca Firebase CLI sürüm 8.13.0 veya üzeri ile çalışır. Bu aşırı yükleme yalnızca Emulator hub ana bilgisayarı:bağlantı noktası FIREBASE_EMULATOR_HUB ortam değişkeni tarafından belirtildiğinde çalışır.
withFunctionTriggersDisabled(hub, fn) Arka plan Bulut İşlevleri tetikleyicileri devre dışıyken bir kurulum işlevi çalıştırın. Bu, yerel olarak öykünülmüş Bulut İşlevlerini tetiklemeden verileri Gerçek Zamanlı Veritabanına veya Cloud Firestore öykünücüsüne aktarmak için kullanılabilir. Bu yöntem yalnızca Firebase CLI sürüm 8.13.0 veya üzeri ile çalışır. Bu aşırı yüklemede hangi ana bilgisayar ve bağlantı noktasının belirtildiği Emulator hub'ının çalışıyor olması gerekir.

Arayüzler

Arayüz Tanım
Ana Bilgisayar ve Bağlantı Noktası Bir öykünücünün ana bilgisayar adını ve bağlantı noktası numarasını içeren bir nesne.
KurallarTestBağlamı Bir istemciyi temsil eden bir test bağlamı. Kural birimi testi için emülatörlere erişmek için kullanılabilir.
KurallarTestOrtamı Kural birimi test ortamını kontrol etmek için kullanılan bir nesne. Farklı kimlik doğrulama durumları için RulesTestContext oluşturmak için kullanılabilir.
TestEnvironmentConfig Emülatörler de dahil olmak üzere birim test ortamının yapılandırılması.

Takma Adları Yazın

Takma Ad yazın Tanım
EmulatorYapılandırması Belirli bir emülatör için yapılandırma.
TokenSeçenekleri Geliştirici tarafından belirlenen özel talepler veya Firebase Auth jetonu yükleri için isteğe bağlı geçersiz kılmalar da dahil olmak üzere, test için kullanılacak sahte kullanıcı jetonuna yönelik daha fazla seçenek.

iddiaFails()

Taahhüdün "izin reddedildi" hatasıyla reddedileceğini iddia edin.

Belirli bir isteğin Güvenlik Kuralları tarafından reddedileceğini ileri sürmek faydalıdır. Aşağıdaki örneğe bakın. Bu işlev Database, Firestore ve Storage JS SDK'larından gelen izin reddedilen hataları tanır.

İmza:

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

Parametreler

Parametre Tip Tanım
halkla ilişkiler <herhangi birine> söz ver ileri sürülecek söz

İadeler:

<herhangi birine> söz ver

pr'nin "izin reddedildi" ile reddedilmesi durumunda yerine getirilen bir Söz. PR başka bir hatayla reddedilirse veya çözümlenirse, döndürülen söz reddedilir.

Örnek

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

iddiaBaşarılı()

Başarılı olma sözünü verin.

Bu, iletilen vaadi olduğu gibi döndüren işlem dışı bir işlevdir, ancak belirli bir isteğin başarılı olması gerektiğini (örneğin, kurallar tarafından izin verilmesi) vurgulamak için test kodunda belgeleme amacıyla kullanılabilir.

İmza:

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

Parametreler

Parametre Tip Tanım
halkla ilişkiler Söz<T>

İadeler:

Söz<T>

Örnek

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

BaşlatmaTestEnvironment()

Kural birimi testi için bir test ortamı başlatır. Test kurulumu için önce bu işlevi çağırın.

Emülatörlerin çalışmasını gerektirir. Bu işlev, bu emülatörleri ortam değişkenleri aracılığıyla veya ana bilgisayarlar ve bağlantı noktaları belirtilmemişse Firebase Emulator hub'ı aracılığıyla keşfetmeye çalışır. Test için kullanılan emülatörler için güvenlik kurallarının belirtilmesi önemle tavsiye edilir. Aşağıdaki minimal örneğe bakın.

İmza:

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

Parametreler

Parametre Tip Tanım
yapılandırma TestEnvironmentConfig emülatörler için yapılandırma. Çoğu alan keşfedilebilirse isteğe bağlıdır

İadeler:

Söz< KurallarTestEnvironment >

teste hazır bir ortamla çözülen veya hata durumunda reddedilen bir söz.

Örnek

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()

Arka plan Bulut İşlevleri tetikleyicileri devre dışıyken bir kurulum işlevi çalıştırın. Bu, yerel olarak öykünülmüş Bulut İşlevlerini tetiklemeden verileri Gerçek Zamanlı Veritabanına veya Cloud Firestore öykünücüsüne aktarmak için kullanılabilir.

Bu yöntem yalnızca Firebase CLI sürüm 8.13.0 veya üzeri ile çalışır. Bu aşırı yükleme yalnızca Emulator hub ana bilgisayarı:bağlantı noktası FIREBASE_EMULATOR_HUB ortam değişkeni tarafından belirtildiğinde çalışır.

İmza:

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

Parametreler

Parametre Tip Tanım
fn () => TRsonuç | Söz<TResult> senkronize veya eşzamansız olabilecek bir işlev (bir söz verir)

İadeler:

Söz<TResult>

withFunctionTriggersDisabled()

Arka plan Bulut İşlevleri tetikleyicileri devre dışıyken bir kurulum işlevi çalıştırın. Bu, yerel olarak öykünülmüş Bulut İşlevlerini tetiklemeden verileri Gerçek Zamanlı Veritabanına veya Cloud Firestore öykünücüsüne aktarmak için kullanılabilir.

Bu yöntem yalnızca Firebase CLI sürüm 8.13.0 veya üzeri ile çalışır. Bu aşırı yüklemede hangi ana bilgisayar ve bağlantı noktasının belirtildiği Emulator hub'ının çalışıyor olması gerekir.

İmza:

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

Parametreler

Parametre Tip Tanım
merkez { ana bilgisayar: dize; Port numarası; } Emulator Hub'ın ana bilgisayarı ve bağlantı noktası (ör. {host: 'localhost', port: 4400} )
fn () => TRsonuç | Söz<TResult> senkronize veya eşzamansız olabilecek bir işlev (bir söz verir)

İadeler:

Söz<TResult>

EmulatorYapılandırması

Belirli bir emülatör için yapılandırma.

İmza:

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

TokenSeçenekleri

Geliştirici tarafından belirlenen özel talepler veya Firebase Auth jetonu yükleri için isteğe bağlı geçersiz kılmalar da dahil olmak üzere, test için kullanılacak sahte kullanıcı jetonuna yönelik daha fazla seçenek.

İmza:

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;
};