Uygulamanızı Realtime Database Emulator'a bağlama

Uygulamanızı Realtime Database emülatörüne bağlamadan önce Firebase Local Emulator Suite iş akışını genel olarak anlarsınız, Ayrıca kurun ve yapılandırdığınız Local Emulator Suite ifadesini tıklayın ve CLI komutlarını inceleyin.

Firebase projesi seçin

Firebase Local Emulator Suite, tek bir Firebase projesi için ürün emülasyonu yapar.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce CLI çalıştırmasında Çalışma dizininizde firebase use. Ya da her emülatöre --project işaretini komutuna dokunun.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projeleri.

Proje türü Özellikler Emülatörlerle kullanım
Gerçek

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

Gerçek projelerde veritabanı örnekleri ve depolama alanı gibi canlı kaynaklar bulunur Firebase için oluşturduğunuz paketler, işlevler veya diğer kaynaklar belirler.

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

emüle etmediğiniz tüm ürünlerde uygulamalarınız ve kodunuz live kaynakla (veri tabanı örneği, depolama alanı) grup, işlev vb.) belirtin.

Demo

Demo Firebase projesinin gerçek bir Firebase yapılandırması yoktur ve canlı kaynak yok. Bu projelere genellikle codelab'ler veya eğiticidir.

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

Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörler aracılığıyla gerçekleştirilir. Uygulamanız bir kaynakla etkileşim kurmaya çalışırsa çalışmadığı durumlarda bu kod başarısız olur.

Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:

  • Emülatörleri, herhangi bir kod oluşturmadan da çalıştırabildiğiniz için kurulumu daha kolay Firebase projesi
  • Kodunuz yanlışlıkla emülasyonsuz bir kod çağırırsa daha yüksek güvenlik sağlar (üretim) kaynaklarında, veri değişikliği, kullanım ve faturalandırma ihtimali yoktur.
  • Gerektiğinde internet bağlantısı olmadığında çevrimdışı destek SDK yapılandırmanızı indirin.
ziyaret edin.

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

Android, Apple platformları ve Web SDK'ları

API'lerle etkileşimde bulunmak için uygulama içi yapılandırmanızı Realtime Database aşağıda verilmiştir.

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);
Swift
    // 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

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

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

Realtime Database etkinlikleri tarafından tetiklenen Cloud Functions işlevlerini test etmek için ek kuruluma gerek yoktur. emülatörü kullanabilirsiniz. Realtime Database ve Cloud Functions emülatörleri, otomatik olarak birlikte çalışır.

Admin SDK

Firebase Admin SDK öğeleri, aşağıdaki durumlarda otomatik olarak Realtime Database emülatörüne bağlanır: FIREBASE_DATABASE_EMULATOR_HOST ortam değişkeni ayarlandı:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

Kodunuz Cloud Functions emülatörünün içinde çalışıyorsa proje kimliğiniz ve diğer yapılandırmalar, initializeApp çağrılırken otomatik olarak ayarlanır.

Admin SDK kodunuzun şurada çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız: başka bir ortamda kullanmak istiyorsanız Firebase CLI'yı kullanarak ayarladığınız proje kimliğini belirtmeniz gerekir. Bir proje kimliğini doğrudan initializeApp adlı iş ortağına iletebilir veya GCLOUD_PROJECT ortam değişkeni.

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

Testler arasında veritabanınızı temizleme

Etkinlikler arasında Realtime Database öğesini temizlemek için veritabanı referansını temizleyebilirsiniz. Bu yaklaşımı, emülatör işlemini 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);
Swift
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web

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

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

Doğal olarak kodunuz, boşaltma işleminin tamamlandığına veya platformunuzun eşzamansız etkinlik işleme özellikleri kullanılarak başarısız olduğuna dair onayı beklemelidir.

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

Verileri içe ve dışa aktarma

Veritabanı ve Cloud Storage for Firebase emülatörleri, verileri dışa aktarmanıza olanak tanır. örneğine döneceğim. Projenizde kullanılacak temel bir veri kümesi tanımlayın ve sürekli entegrasyon iş akışlarını analiz etmek ve paylaşmak üzere yüksek tutulması bakımından çok değerli.

firebase emulators:export ./dir

Testlerde, emülatör başlatılırken referans verileri içe aktarın.

firebase emulators:start --import=./dir

Emülatöre, kapanma sırasında verileri dışa aktarma talimatı vermek için dışa aktarma yolunu kullanabilir veya --import öğesine geçirilen yolu kullanabilirsiniz. tıklayın.

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

Bu veri içe ve dışa aktarma seçenekleri firebase emulators:exec komutunu da kullanabilirsiniz. Daha fazla bilgi için emülatör komut referansı.

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

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

Kural değerlendirmelerini görselleştirme

Prototipinize Güvenlik Kuralları eklerken Local Emulator Suite araçları.

Bir dizi testi çalıştırdıktan sonra, test kapsamı raporlarına (yani nasıl değerlendirildiğini gösterir. Raporları almak için, reklam grubu düzeyinde uç noktasını devre dışı bırakır. 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ı daha sonra kolayca kullanabileceğiniz ifadelere ve alt ifadelere Yürütme sayısı ve değerler de dahil olmak üzere daha fazla bilgi için fareyle üzerine gelin geri döndü. Bu verilerin ham JSON sürümü için aşağıdaki URL'yi sorgunuz:

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

Sonrasında ne olacak?