Catch up on highlights from Firebase at Google I/O 2023. Learn more

Uygulamanızı Realtime Database Emulator'a bağlayın

Uygulamanızı Realtime Database emülatörüne bağlamadan önce, genel Firebase Local Emulator Suite iş akışını anladığınızdan ve Local Emulator Suite'i kurup yapılandırdığınızdan ve CLI komutlarını gözden geçirdiğinizden emin olun.

Bir Firebase projesi seçin

Firebase Local Emulator Suite, ürünleri tek bir Firebase projesi için taklit eder.

Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'da çalışma dizininizdeki firebase use . Veya --project bayrağını her emülatör komutuna iletebilirsiniz.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin emülasyonunu destekler.

Proje tipi Özellikler Emülatörlerle kullanın
Gerçek

Gerçek bir Firebase projesi sizin oluşturup yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

Gerçek projeler, veritabanı örnekleri, depolama grupları, işlevler veya o Firebase projesi için ayarladığınız diğer kaynaklar gibi canlı kaynaklara sahiptir.

Gerçek Firebase projeleriyle çalışırken, desteklenen ürünlerin herhangi biri veya tümü için öykünücüler çalıştırabilirsiniz.

Taklit etmediğiniz tüm ürünler için uygulamalarınız ve kodunuz, canlı kaynakla (veritabanı eşgörünümü, depolama grubu, işlev vb.) etkileşime girer.

Demo

Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir.

Demo projeleri için proje kimliklerinde demo- öneki bulunur.

Demo Firebase projeleriyle çalışırken, uygulamalarınız ve kodunuz yalnızca emülatörlerle etkileşime girer. Uygulamanız, öykünücünün çalışmadığı bir kaynakla etkileşime girmeye çalışırsa, bu kod başarısız olur.

Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Avantajlar şunları içerir:

  • Bir Firebase projesi oluşturmadan öykünücüleri çalıştırabileceğiniz için daha kolay kurulum
  • Daha güçlü güvenlik, çünkü kodunuz yanlışlıkla öykünülmemiş (üretim) kaynakları çalıştırırsa veri değişikliği, kullanım ve faturalandırma şansı olmaz
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Öykünücülerle konuşmak için uygulamanızı kullanın

Android, Apple platformları ve Web SDK'ları

Gerçek Zamanlı Veritabanı ile etkileşim kurmak için uygulama içi yapılandırmanızı veya test sınıflarınızı aşağıdaki gibi ayarlayın.

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
Süratli
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Web modular API

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Web namespaced API

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

Öykünücü kullanılarak Gerçek Zamanlı Veritabanı olayları tarafından tetiklenen Bulut İşlevlerini test etmek için ek kurulum gerekmez. Realtime Database ve Cloud Functions öykünücülerinin her ikisi de çalışırken otomatik olarak birlikte çalışır.

Yönetici SDK'ları

Firebase Admin SDK'ları, FIREBASE_DATABASE_EMULATOR_HOST ortam değişkeni ayarlandığında otomatik olarak Realtime Database öykünücüsüne bağlanır:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

Kodunuz Bulut İşlevleri öykünücüsü içinde çalışıyorsa proje kimliğiniz ve diğer yapılandırma, initalizeApp çağrılırken otomatik olarak ayarlanır.

Admin SDK kodunuzun başka bir ortamda çalışan paylaşılan bir öykünücüye bağlanmasını istiyorsanız, Firebase CLI'yi kullanarak ayarladığınız aynı proje kimliğini belirtmeniz gerekir. Doğrudan initializeApp için bir proje kimliği iletebilir veya GCLOUD_PROJECT ortam değişkenini ayarlayabilirsiniz.

Node.js Yönetici SDK'sı
admin.initializeApp({ projectId: "your-project-id" });
Çevre değişkeni
export GCLOUD_PROJECT="your-project-id"

Testler arasında veritabanınızı temizleyin

Gerçek Zamanlı Veritabanını etkinlikler arasında boşaltmak için veritabanı referansını temizleyebilirsiniz. Bu yaklaşımı, emülatör sürecini basitçe kapatmaya bir alternatif olarak kullanabilirsiniz.

Kotlin+KTX
// With a DatabaseReference, write null to clear the database.
database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
Süratli
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web modular API

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web namespaced API

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

Doğal olarak, kodunuz, platformunuzun eşzamansız olay işleme özelliklerini kullanarak temizlemenin tamamlandığının veya başarısız olduğunun onaylanmasını beklemelidir.

Bunun gibi bir adım uyguladıktan sonra, eski verilerin çalıştırmalar arasında temizleneceğinden ve yeni bir temel test yapılandırması kullandığınızdan emin olarak testlerinizi sıralayabilir ve işlevlerinizi tetikleyebilirsiniz.

Verileri içe ve dışa aktarma

Veritabanı ve Cloud Storage for Firebase öykünücüleri, çalışan bir öykünücü örneğinden verileri dışa aktarmanıza olanak tanır. Birim testlerinizde veya sürekli entegrasyon iş akışlarınızda kullanmak üzere bir temel veri seti tanımlayın ve ardından bunu ekip arasında paylaşmak üzere dışa aktarın.

firebase emulators:export ./dir

Testlerde, öykünücü başlangıcında temel verileri içe aktarın.

firebase emulators:start --import=./dir

Öykünücüye, bir dışa aktarma yolu belirterek veya yalnızca --import bayrağına iletilen yolu kullanarak kapatma sırasında verileri dışa aktarma talimatı verebilirsiniz.

firebase emulators:start --import=./dir --export-on-exit

Bu veri içe ve dışa aktarma seçenekleri, firebase emulators:exec komutuyla da çalışır. Daha fazlası için öykünücü komut başvurusuna bakın.

Güvenlik Kuralları etkinliğini görselleştirin

Prototip ve test döngüleri üzerinde çalışırken, Local Emulator Suite tarafından sağlanan görselleştirme araçlarını ve raporları kullanabilirsiniz.

Görselleştirme Kuralları değerlendirmeleri

Prototipinize Güvenlik Kuralları eklerken, Local Emulator Suite araçlarıyla bu kurallarda hata ayıklayabilirsiniz.

Bir dizi test çalıştırdıktan sonra, kurallarınızdan her birinin nasıl değerlendirildiğini gösteren test kapsamı raporlarına erişebilirsiniz. Raporları almak için öykünücü çalışırken açıkta kalan bir uç noktayı sorgulayın. Tarayıcı dostu bir sürüm için aşağıdaki URL'yi kullanın:

http://localhost:9000/.inspect/coverage?ns=<database_name>

Bu, kurallarınızı, yürütme sayısı ve döndürülen değerler dahil olmak üzere daha fazla bilgi için fareyle üzerine getirebileceğiniz ifadelere ve alt ifadelere ayırır. Bu verilerin ham JSON sürümü için sorgunuza aşağıdaki URL'yi ekleyin:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

Sırada ne var?