Birim testleri oluşturma

Firebase Local Emulator Suite, uygulamanızın Özellikler ve davranışlar. Aynı zamanda Firebase Security Rules yapılandırmalarınızı doğrulamak için harika bir araçtır. Firebase Emulators'ı kullanma yerel ortamda birim testlerini çalıştırmak ve otomatikleştirmek için kullanılır. Bu makalede açıklanan yöntemler Bu belge, uygulamanız için birim testleri oluşturup otomatikleştirirken size yardımcı olacaktır Rules doğrulayın.

Henüz yapmadıysanız Firebase Emülatörleri'ni ayarlayın.

Emülatörü çalıştırmadan önce

Emülatörü kullanmaya başlamadan önce aşağıdakileri göz önünde bulundurun:

  • Emülatör, başlangıçta firestore.rules içinde belirtilen kuralları yükler veya "storage.rules" alanına (firebase.json dosyanızın) yapıştırın. Dosya loadFirestoreRules veya "loadStorageRules" parametresini kullanmıyorsanız yöntem aşağıda açıklandığı gibi, emülatör tüm projeleri açık kurallara sahip olarak değerlendirir.
  • Çoğu Firebase SDK'sı doğrudan emülatörlerle çalışırken yalnızca @firebase/rules-unit-testing kitaplığı, Security Rules'da auth taklit etmeyi destekler. Bu da birim testlerini çok daha kolay hale getirir. Ayrıca, kitaplık, tüm verileri temizleme, emülatöre özgü bazı özellikleri, aşağıda gösterildiği gibidir.
  • Emülatörler, sağlanan üretim Firebase Auth jetonlarını da kabul eder aracılığıyla bağlantı kurabilir ve kuralları uygun şekilde değerlendirebilirsiniz. Bu da uygulamanızı doğrudan entegrasyon ve manuel testlerde emülatörlere

Veritabanı emülatörleri ve üretim arasındaki farklar

  • Açıkça veritabanı örneği oluşturmanız gerekmez. Emülatör Böylece erişilen herhangi bir veritabanı örneği otomatik olarak oluşturulur.
  • Her yeni veritabanı kapalı kurallarla başlatılır. Bu nedenle, yönetici olmayan kullanıcılar okuma veya yazma becerisine sahip olmalıdır.
  • Emüle edilen her veritabanı Spark planını uygular sınırları ve kotaları (en önemlisi, bu ayar her örneği 100 eşzamanlı bağlantı).
  • Tüm veritabanları "owner" dizesini yönetici kimlik doğrulama jetonu olarak kabul eder.
  • Emülatörlerin şu anda diğer Firebase ile çalışan etkileşimleri yok ürünler. Bu durum özellikle normal Firebase Authentication akışı çalışmaz. Bunun yerine, rules-unit-testing içindeki initializeTestApp() yöntemini kullanabilirsiniz (auth alanını içerir). Bu komut kullanılarak oluşturulan Firebase nesnesi yöntemi başarılı bir şekilde kimlik doğrulaması yapılmış gibi davranır. gerçekleşebilir. null içinde geçerseniz şu şekilde davranır: kimliği doğrulanmamış kullanıcı (örneğin, auth != null kural başarısız olur).

Realtime Database emülatörüyle etkileşimde bulunma

Üretim Firebase Realtime Database örneğine şu alanın alt alan adından erişilebilir: firebaseio.com. REST API'ye şu şekilde erişebilirsiniz:

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

Emülatör yerel olarak çalışır ve localhost:9000 adresinde kullanılabilir. Belirli bir veritabanı örneğiyle etkileşime geçmek için veritabanı adını belirtmek üzere ns sorgu parametresini kullanmanız gerekir.

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

9 numaralı JavaScript SDK'sı ile yerel birim testleri çalıştırma

Firebase, Güvenlik Kuralları birimi test kitaplığını hem kendi sürümüyle dağıtır 9 JavaScript SDK'sı ve sürüm 8 SDK'sı. Kitaplık API'leri önemli ölçüde farklıdır. Daha basit ve daha basit olan v9 test kitaplığını öneririz. emülatörlere bağlanmak için daha az kurulum gerektirir ve bu sayede kazara olabilecek üretim kaynaklarının kullanılmasıdır. Geriye dönük uyumluluk için mevcut v8 test kitaplığı.

Yerel olarak çalışan emülatörle etkileşimde bulunmak için @firebase/rules-unit-testing modülünü kullanın. Zaman aşımı veya ECONNREFUSED hataları alırsanız emülatörünün gerçekten çalıştığından emin olun.

Node.js'yi kullanabilmek için yeni bir sürüm async/await gösterimi. Test etmek isteyebileceğiniz davranışların neredeyse tamamı, asenkron işlevler içerir ve test modülü, Promise tabanlı kodla çalışacak şekilde tasarlanmıştır.

v9 Kural Birimi Testi kitaplığı emülatörlerden her zaman haberdar olur ve ve prodüksiyon kaynaklarınız ile bağlantılı olması gerekir.

Kitaplığı, v9 modüler içe aktarma ifadelerini kullanarak içe aktarırsınız. Örneğin:

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.

İçe aktarma işleminden sonra, birim testlerinin uygulanması şunları içerir:

  • Şuna çağrı içeren bir RulesTestEnvironment oluşturma ve yapılandırma: initializeTestEnvironment.
  • Rules'ü tetiklemeden test verilerini ayarlama, bu ayarları geçici olarak atlamanıza olanak tanıyan bir kolaylık yöntemi kullanarak, RulesTestEnvironment.withSecurityRulesDisabled.
  • test verilerini ve ortamını temizleyin (ör. RulesTestEnvironment.cleanup()) veya RulesTestEnvironment.clearFirestore().
  • Kimlik doğrulama durumlarını taklit eden test durumları uygulama RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext.

Yaygın yöntemler ve yardımcı işlevler

Şunlara da bakabilirsiniz: modüler API'yi kullanarak emülatöre özel test yöntemlerini test edin.

initializeTestEnvironment() => RulesTestEnvironment

Bu işlev, kural birimi testi için bir test ortamı başlatır. Bunu ara işlevini kullanın. Başarılı bir yürütme için emülatörlerin çalışıyor olması gerekir.

İşlev, TestEnvironmentConfig tanımlayan isteğe bağlı bir nesneyi kabul eder Bu kod, proje kimliği ve emülatör yapılandırma ayarlarından oluşabilir.

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

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

Bu yöntem, kimliği doğrulanmış bir RulesTestContext Authentication kullanıcı. Döndürülen bağlam aracılığıyla oluşturulan istekler örnek olarak sunulur Authentication jetonu eklendi. İsteğe bağlı olarak, özel hak talepleri tanımlayan bir nesne iletin veya Authentication jeton yükünü geçersiz kılar.

Herhangi bir emülatöre erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın initializeTestEnvironment ile yapılandırılanlar dahil olmak üzere örnek yapılandırıldı.

// 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

Bu yöntem, RulesTestContext gibi çalışan bir istemciyi oluşturur. Authentication aracılığıyla giriş yapılmadı. Döndürülen bağlam üzerinden oluşturulan istekler Firebase Auth jetonları ekli olmalıdır.

Herhangi bir emülatöre erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın initializeTestEnvironment ile yapılandırılanlar dahil olmak üzere örnek yapılandırıldı.

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

Güvenlik Kuralları gibi davranan bağlama sahip bir test kurulum işlevi çalıştırın devre dışı bırakıldı.

Bu yöntem, Security-Kuralları atlamayı alan ve bir vaat veriyor. Söz verildikten sonra bağlam kaldırılır çözümlenir / reddeder.

RulesTestEnvironment.cleanup()

Bu yöntem test ortamında oluşturulan tüm RulesTestContexts öğelerini kaldırır ve temel kaynakları temizleyerek temiz bir çıkış yapılmasını sağlar.

Bu yöntem, emülatörlerin durumunu hiçbir şekilde değiştirmez. Verileri sıfırlamak için testler arasında uygulama emülatörüne özgü temiz veri yöntemini kullanın.

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

Bu, test durumu yardımcı işlevidir.

İşlev, sağlanan Promise'in bir emülatör işlemini sarmaladığını doğrular hiçbir Güvenlik Kuralı ihlali yapılmadan çözülecektir.

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

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

Bu, test amaçlı bir yardımcı program işlevidir.

İşlev, sağlanan Promise'in bir emülatör işlemini sarmaladığını doğrular kullanıcı Güvenlik Kuralları'nın ihlali durumunda reddedilecektir.

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

Emülatöre özel yöntemler

Şunlara da bakabilirsiniz: modüler API'yi kullanan yaygın test yöntemlerini ve yardımcı işlevleri inceleyin.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Bu yöntem Firestore veritabanındaki Firestore emülatörü için projectId yapılandırıldı.

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

Bu yöntem, bu test bağlamı için bir Firestore örneği alır. Döndürülen Firebase JS İstemci SDK'sı örneği, istemci SDK API'leriyle kullanılabilir (v9 modüler) veya v9 uyumluluğu).

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

Bu yöntem Realtime Database içinde Realtime Database emülatörü için projectId yapılandırıldı.

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

Bu test bağlamı için bir Realtime Database örneği alın. Döndürülen Firebase JS İstemci SDK'sı örneği, istemci SDK API'leriyle (modüler veya ad alanına sahip, sürüm 9 veya sonraki sürümler). Yöntem, Realtime Database örneğinin URL'sini kabul eder. Belirtilirse şunun emüle edilmiş sürümü için bir örnek döndürür: URL'den ayıklanan parametrelerin bulunduğu ad alanı.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

Bu yöntem, Cloud Storage emülatörü için projectId yapılandırıldı.

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

Bu yöntem, emülatöre bağlanacak şekilde yapılandırılmış bir Storage örneği döndürür. Yöntem, test için Firebase Storage Paketi'ne bir gs:// URL'si kabul eder. Eğer belirtildiğinde, paket adının emüle edilmiş bir sürümü için Storage örneği döndürür.

v8 JavaScript SDK'sı ile yerel birim testleri çalıştırma

Firebase Test SDK'sının arayüz oluşturmak için kullandığı yöntemleri görmek için bir ürün seçin bunu emülatörde yapabilirsiniz.

Cloud Firestore

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

Bu yöntem, seçeneklerde belirtilen proje kimliğine ve kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür. Uygulama oluşturmak için bunu kullanın testlerde kullanılacak belirli bir kullanıcı olarak doğrulandı.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Uygulama oluşturmak için bunu kullanın testlerin durumunu ayarlamak için yönetici olarak doğrulandı.

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

apps() => [FirebaseApp] Bu yöntem, o sırada başlatılmış olan tüm test ve yönetici uygulamalarını döndürür. Testler arasında veya sonrasında uygulamaları temizlemek için bu aracı kullanın.

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

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

Bu yöntem, kuralları yerel olarak çalışan bir veritabanına gönderir. Bir nesne alır değerini döndürür. Veritabanınızın kurallarını ayarlamak için bu yöntemi kullanın.

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

assertFails(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa reddedilen veya giriş reddedilirse başarılı olan bir promise döndürür. Bir veritabanının okuma ya da yazma başarısız olur.

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

assertSucceeds(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa ve giriş başarılı olursa başarılı bir reddedilir. Bir veritabanının okuma ya da yardımcı olur.

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

clearFirestoreData({ projectId: string }) => Promise

Bu yöntem, tablodaki belirli bir projeyle ilişkili yerel olarak çalışan Firestore örneğidir. Testlerden sonra temizlik yapmak için bu yöntemi kullanın.

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

Realtime Database

Realtime Database

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adı ve kimlik doğrulamasına karşılık gelen başlatılmış bir Firebase uygulamasını döndürür değişkeni seçeneklerde belirtilen geçersiz kılma.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilmiştir. Bu uygulama, okuma ve yazma sırasında güvenlik kurallarını atlar ekler.

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

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

Veritabanınızın kurallarını ayarlamak için bunu kullanın.

Kuralları yerel olarak çalışan bir veritabanına gönderir. Şuna benzer bir seçenek nesnesini alır: "databaseName" parametrenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.

Veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak için bu komutu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilecek bir taahhüt döndürür.

Veritabanı okuma veya yazma işleminin başarılı olduğunu doğrulamak için bunu kullanın:

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

Cloud Storage

Cloud Storage

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama değişkeni geçersiz kılma işlemine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Depolama paketine karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilen ad. Bu uygulama, okuma ve yükleme sırasında güvenlik kurallarını atlar sakıncası yoktur.

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

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

Depolama paketinizin kurallarını belirlemek için bunu kullanın.

Kuralları, yerel olarak yönetilen depolama paketlerine gönderir. Şuna benzer bir seçenek nesnesini alır: "storageBucket" öğenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir promise döndürür.

Depolama paketi okuma veya yazmanın başarısız olduğunu onaylamak için bunu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan ve giriş reddedildi.

Depolama paketinin okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:

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

JS SDK v8 için RUT kitaplık API'si

Firebase Test SDK'sının arayüz oluşturmak için kullandığı yöntemleri görmek için bir ürün seçin bunu emülatörde yapabilirsiniz.

Cloud Firestore

Cloud Firestore

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

Bu yöntem, seçeneklerde belirtilen proje kimliğine ve kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür. Uygulama oluşturmak için bunu kullanın testlerde kullanılacak belirli bir kullanıcı olarak doğrulandı.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Uygulama oluşturmak için bunu kullanın testlerin durumunu ayarlamak için yönetici olarak doğrulandı.

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

apps() => [FirebaseApp] Bu yöntem, o sırada başlatılmış olan tüm test ve yönetici uygulamalarını döndürür. Testler arasında veya sonrasında uygulamaları temizlemek için bu aracı kullanın.

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

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

Bu yöntem, kuralları yerel olarak çalışan bir veritabanına gönderir. Bir nesne alır değerini döndürür. Veritabanınızın kurallarını ayarlamak için bu yöntemi kullanın.

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

assertFails(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa reddedilen veya giriş reddedilirse başarılı olan bir promise döndürür. Bir veritabanının okuma ya da yazma başarısız olur.

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

assertSucceeds(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa ve giriş başarılı olursa başarılı bir reddedilir. Bir veritabanının okuma ya da yardımcı olur.

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

clearFirestoreData({ projectId: string }) => Promise

Bu yöntem, tablodaki belirli bir projeyle ilişkili yerel olarak çalışan Firestore örneğidir. Testlerden sonra temizlik yapmak için bu yöntemi kullanın.

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

Realtime Database

Realtime Database

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adı ve kimlik doğrulamasına karşılık gelen başlatılmış bir Firebase uygulamasını döndürür değişkeni seçeneklerde belirtilen geçersiz kılma.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilmiştir. Bu uygulama, okuma ve yazma sırasında güvenlik kurallarını atlar ekler.

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

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

Veritabanınızın kurallarını ayarlamak için bunu kullanın.

Kuralları yerel olarak çalışan bir veritabanına gönderir. Şuna benzer bir seçenek nesnesini alır: "databaseName" parametrenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.

Veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak için bu komutu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilecek bir taahhüt döndürür.

Veritabanı okuma veya yazma işleminin başarılı olduğunu doğrulamak için bunu kullanın:

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

Cloud Storage

Cloud Storage

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama değişkeni geçersiz kılma işlemine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Depolama paketine karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilen ad. Bu uygulama, okuma ve yükleme sırasında güvenlik kurallarını atlar sakıncası yoktur.

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

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

Depolama paketinizin kurallarını belirlemek için bunu kullanın.

Kuralları, yerel olarak yönetilen depolama paketlerine gönderir. Şuna benzer bir seçenek nesnesini alır: "storageBucket" öğenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir promise döndürür.

Depolama paketi okuma veya yazmanın başarısız olduğunu onaylamak için bunu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan ve giriş reddedildi.

Depolama paketinin okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:

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