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 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.
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?
- Özenle seçilmiş bir video seti ve ayrıntılı "Nasıl yapılır?" örnekleri için Firebase Emulators Eğitimi Oynatma Listesi'ni takip edin.
- Güvenlik Kuralları testi ve Firebase Test SDK'sını içeren gelişmiş kullanım alanlarını inceleyin: Test Security Rules (Realtime Database).
- Tetiklenen işlevler Realtime Database ile tipik bir entegrasyon olduğundan Cloud Functions for Firebase emülatörü hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: İşlevleri yerel olarak çalıştırın.