Uygulamanızı Gerçek Zamanlı Veritabanı Emülatörüne bağlayın

Uygulamanızı Realtime Database öykünücüsü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.

Firebase projesi seçin

Firebase Local Emulator Suite, tek bir Firebase projesine yönelik ürünleri taklit eder.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce, CLI'de çalışma dizininizde firebase use çalıştırın. Veya --project bayrağını her emulator 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, oluşturduğunuz ve yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

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

Gerçek Firebase projeleriyle çalışırken desteklenen ürünlerin herhangi biri veya tümü için emülatörler çalıştırabilirsiniz.

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

Demo

Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle codelab'ler veya diğer eğitimler aracılığıyla erişilir.

Demo projelerine ait proje kimlikleri demo- önekine sahiptir.

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şim kurmaya çalışırsa bu kod başarısız olur.

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

  • Emülatörleri Firebase projesi oluşturmadan çalıştırabileceğiniz için daha kolay kurulum
  • Kodunuzun yanlışlıkla öykünmemiş (üretim) kaynakları çağırması durumunda veri değişikliği, kullanım ve faturalandırma şansı olmayacağı için daha güçlü güvenlik
  • SDK yapılandırmanızı indirmek için internete erişmenize gerek olmadığından daha iyi çevrimdışı destek.

Emülatörlerle konuşmak için uygulamanızı kullanın

Android, Apple platformları ve Web SDK'ları

Uygulama içi yapılandırmanızı veya test sınıflarınızı Gerçek Zamanlı Veritabanıyla etkileşim kuracak şekilde 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://127.0.0.1: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, "127.0.0.1", 9000);
} 

Web namespaced API

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

Öykünücüyü kullanarak Gerçek Zamanlı Veritabanı olayları tarafından tetiklenen Bulut İşlevlerini test etmek için ek kurulum gerekmez. Gerçek Zamanlı Veritabanı ve Bulut İşlevleri öykünücülerinin her ikisi de çalışırken otomatik olarak birlikte çalışırlar.

Yönetici SDK'ları

Firebase Yönetici SDK'ları, FIREBASE_DATABASE_EMULATOR_HOST ortam değişkeni ayarlandığında otomatik olarak Gerçek Zamanlı Veritabanı öykünücüsüne bağlanır:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

Kodunuz Cloud Functions öykünücüsü içinde çalışıyorsa, proje kimliğiniz ve diğer yapılandırmanız, initializeApp çağrılırken otomatik olarak ayarlanacaktır.

Yönetici SDK kodunuzun başka bir ortamda çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız Firebase CLI'yi kullanarak belirlediğiniz 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 işlemini basitçe kapatmaya 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 özellikleri kullanılarak temizlemenin tamamlandığı veya başarısız olduğu yönündeki onayı 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 kullanılacak temel veri kümesini tanımlayın ve ardından bunu ekip arasında paylaşılmak üzere dışa aktarın.

firebase emulators:export ./dir

Testlerde emülatör başlatıldığı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 aktarması talimatını 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 fazla bilgi için emülatör komut referansına 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.

Kural değerlendirmelerini görselleştirin

Prototipinize Güvenlik Kuralları ekledikçe, Local Emulator Suite araçlarıyla bunların hatalarını ayıklayabilirsiniz.

Bir dizi test çalıştırdıktan sonra kurallarınızın her birinin nasıl değerlendirildiğini gösteren test kapsamı raporlarına erişebilirsiniz. Raporları almak için emülatör ç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 de dahil olmak üzere daha fazla bilgi için fareyle üzerine gelebileceğiniz ifadelere ve alt ifadelere böler. 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?