Uygulamanızı Realtime Database Emulator'a 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.

Bir Firebase projesi seçin

Firebase Local Emulator Suite, ürünleri tek bir Firebase projesi için öykünür.

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

Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin öykünmesini destekler.

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

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

Gerçek projeler, veritabanı örnekleri, depolama paketleri, işlevler veya o Firebase projesi için kurduğunuz 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ı örneği, depolama grubu, işlev vb.) etkileşime girer.

Demo

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

Demo projeleri için proje kimlikleri demo ön demo- sahiptir.

Demo Firebase projeleriyle çalışırken, uygulamalarınız ve kodunuz yalnızca öykünücülerle etkileşime girer. Uygulamanız, bir ö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 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 taklit edilmeyen (üretim) kaynakları çalıştırırsa, veri değişikliği, kullanım ve faturalandırma şansı yoktur.
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Emülatörlerle konuşmak için uygulamanızı enstrümantal edin

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.

Android
        // 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 version 9

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 version 8

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

Öykünücüyü kullanarak 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 ikisi de çalışırken, otomatik olarak birlikte çalışırlar.

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 Cloud Functions öykünücüsü içinde çalışıyorsa, proje kimliğiniz ve diğer yapılandırmanız, initalizeApp otomatik olarak ayarlanır.

Yönetici SDK kodunuzun başka bir ortamda çalışan paylaşılan bir öykünücüye bağlanmasını istiyorsanız , Firebase CLI kullanarak ayarladığınız proje kimliğinin aynısını belirtmeniz gerekir. App'i 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 temizlemek için veritabanı referansını temizleyebilirsiniz. Bu yaklaşımı, öykünücü işlemini basitçe kapatmaya bir alternatif olarak kullanabilirsiniz.

Android
// 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 version 9

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 version 8

// 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 temizleme işleminin bittiğine veya başarısız olduğuna dair onay beklemelidir.

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

Verileri içe ve dışa aktarma

Veritabanı ve Cloud Storage ö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 için temel bir veri seti tanımlayın ve ardından ekip arasında paylaşılmak üzere dışa aktarın.

firebase emulators:export ./dir

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

firebase emulators:start --import=./dir

Bir dışa aktarma yolu belirterek veya yalnızca --import bayrağına iletilen yolu kullanarak, öykünücüye 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 emülatör komutu 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ını kullanabilirsiniz.

Kural değerlendirmelerini görselleştirin

Prototipinize Güvenlik Kuralları eklerken, Local Emulator Suite araçlarıyla bu kuralları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, ö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 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ıradaki ne?