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. DosyaloadFirestoreRules
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'daauth
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çindekiinitializeTestApp()
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ığı.
- v9 SDK'sında yaygın test yöntemleri ve yardımcı program işlevleri
- v9 SDK'sında emülatöre özel test yöntemleri
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()
) veyaRulesTestEnvironment.clearFirestore()
. - Kimlik doğrulama durumlarını taklit eden test durumları uygulama
RulesTestEnvironment.authenticatedContext
veRulesTestEnvironment.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());