Firebase Local Emulator Suite kullanmaya başlamadan önce kurma, geliştirme ortamınızı ayarlama ve test Platformunuz için Firebase konuları: Apple, Android veya Web.
Prototip oluşturun ve test edin
Local Emulator Suite, aşağıda açıklandığı gibi çeşitli ürün emülatörleri içerir: Firebase Local Emulator Suite tanıtımı. Tek tek emülatörlerin yanı sıra çeşitli kombinasyonları kullanarak prototip oluşturabilir ve test edebilirsiniz. emülatörleri, kullandığınız Firebase ürünlerine karşılık gelecek şekilde emin olabilirsiniz.
. 'nı inceleyin.Bu konuda, Local Emulator Suite iş akışını tanıtmak için Firebase'in tipik bir ürün kombinasyonunu kullanan veritabanı ve bulut işlevleri tarafından tetiklenir.
Firebase projenizi yerel olarak başlattıktan sonra, Local Emulator Suite uygulamasında genellikle üç adım bulunur:
Prototip özellikleri, emülatörler ve Emulator Suite UI ile etkileşimli olarak oluşturulur.
Veritabanı emülatörü veya Cloud Functions emülatörü kullanıyorsanız uygulamanızı emülatörlere bağlamak için tek seferlik bir adım tamamlayın.
Emülatörler ve özel komut dosyalarıyla testlerinizi otomatikleştirin.
Bir Firebase projesini yerel olarak başlatma
KSA'yı yüklediğinizden veya en son sürümüne güncelleyin.
curl -sL firebase.tools | bash
Henüz yapmadıysanız mevcut çalışma dizinini Ekrandaki bilgi istemlerini uygulayarak Firebase projesinin Cloud Functions ve Cloud Firestore ya da Realtime Database:
firebase init
Proje dizininiz artık Firebase yapılandırma dosyalarını içerir.
Veritabanı için Firebase Security Rules tanım dosyası, bir functions
dizini
Cloud Functions kodunu ve diğer destekleyici dosyaları içerir.
Etkileşimli olarak prototip oluşturun
Local Emulator Suite, yeni özelliklerin prototipini hızlıca oluşturmanıza olanak tanıyacak şekilde tasarlanmıştır. Suite'in yerleşik kullanıcı arayüzü, Google'ın en yararlı prototip oluşturma araçlar. Bu işlem Firebase konsolunun yerel olarak çalıştırılmasına benzer.
Emulator Suite UI kullanarak veritabanının tasarımını tekrarlayabilir, Cloud Functions işlevlerini içeren farklı veri akışlarını, Güvenlik Kuralları değişikliklerini değerlendirme arka uç hizmetlerinizin nasıl performans gösterdiğini doğrulamak ve daha fazlası için günlükleri kontrol edin. Ardından, veritabanınızı temizleyip yeni bir başlangıç yapın. bir fikirle ortaya çıktı.
Bu özelliklerin tamamı, Local Emulator Suite özelliğini şu şekilde başlattığınızda kullanılabilir:
firebase emulators:start
Varsayımsal uygulamamızın prototipini oluşturmak için temel bir Cloud Functions işlevi oluşturup test edelim. bir veritabanındaki metin girişlerini değiştirmeye ve hem bu veritabanını oluşturup hem de doldurmaya Emulator Suite UI içinde tetikleyin.
- Veritabanı yazma işlemleriyle tetiklenen bir Cloud Functions işlevi oluşturmak için
functions/index.js
dosyası, proje dizininizde yer alır. . Bu işlevmessages
hiyerarşisindeki düğümlerde yapılan değişiklikleri işler, düğümünoriginal
özelliğinin içeriğini şuna dönüştürür: büyük harfle yazar ve sonucu söz konusu düğümünuppercase
etiketinde depolar - Local Emulator Suite uygulamasını şununla başlatın:
firebase emulators:start
. Cloud Functions ve veritabanı emülatörler başlatılır ve birlikte çalışacak şekilde otomatik olarak yapılandırılır. - Kullanıcı arayüzünü tarayıcınızda görüntüleyin:
http://localhost:4000
. 4000 numaralı bağlantı noktası, kullanıcı arayüzü için varsayılan bağlantı noktasıdır ancak terminal mesajları çıkışını Firebase KSA. Kullanılabilir emülatörlerin durumunu not edin. Bizim örneğimizde Cloud Functions ve Realtime Database emülatörleri çalışır.
. - Kullanıcı arayüzünün Realtime Database sekmesinde,
messages
düğümüne sahip bir düğüm kümesi oluşturmaya yönelik düzenleyici kontrolleri birmessage1
düğüm içerir, sırasıyla şuna sahip bir düğüm içerir: anahtaroriginal
olarak ve değertest
olarak ayarlandı. Bu Cloud Functions işlevimizi tetikler. Yeni biruppercase
özelliğiTEST
değeriyle kısa süre içinde görünür.
. - İşlevinizin inot hataları çalıştırmadığını onaylamak için Günlükler sekmesini kontrol edin. yeniden yüklemeniz gerekir.
const functions = require('firebase-functions/v1'); exports.makeUppercase = functions.database.ref('/messages/{pushId}/original') .onCreate((snapshot, context) => { const original = snapshot.val(); console.log('Uppercasing', context.params.pushId, original); const uppercase = original.toUpperCase(); return snapshot.ref.parent.child('uppercase').set(uppercase); });
Cloud Functions işlevleri ve etkileşimli kullanımlar arasında kolayca iterasyon yapabilirsiniz. istediğiniz veri akışını elde edinceye kadar, veri tabanında düzenleme yapmaya uygulama içi veritabanı erişim kodu, test paketlerini yeniden derleme ve çalıştırma.
Uygulamanızı emülatörlere bağlama
Etkileşimli prototip oluşturmada iyi bir ilerleme kaydettiğinizi ve bir tasarım oluşturduktan sonra şu bağlantıyı kullanarak uygulamanıza veritabanı erişim kodu uygun SDK'yı kullanabilirsiniz. Veritabanı sekmesini ve işlevler için Uygulamanızın davranışını onaylamak için Emulator Suite UI uygulamasındaki Günlükler sekmesi emin olun.
Local Emulator Suite öğesinin bir yerel geliştirme aracı olduğunu unutmayın. Yazma işlemleri prototipini oluşturduğunuz fonksiyonları tetiklemez yerel olarak.
Uygulamanızın veritabanına yazma yapmasına geçiş yapmak için test sınıflarınızı veya uygulama içi yapılandırmanızı Realtime Database emülatörüne yönlendirin.
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); }
Özel komut dosyalarıyla testlerinizi otomatikleştirin
Şimdi sıra, genel iş akışı adımına geçelim. Özelliğinizin prototipini oluşturduktan sonra
tüm platformlarda umut vadettiğini görebilirsiniz. Bunun için
Ürün Sahibi sorumludur. Birim testi ve CI iş akışları için
komut dosyası tabanlı testler çalıştırabilir, emülatörleri kapatabilir ve
exec
komutu:
firebase emulators:exec "./testdir/test.sh"
Her bir emülatörü daha ayrıntılı şekilde keşfedin
Temel istemci tarafı iş akışının nasıl olduğuna dair bilgi aldığınıza göre Suite'teki bağımsız emülatörlerle ilgili, uygulama geliştirmede kullanmak için:
- Prototip oluşturma iş akışlarınıza Authentication emülatörünü ekleyin
- Realtime Database emülatör özelliklerini derinlemesine öğrenin
- Cloud Storage for Firebase emülatör özelliklerini derinlemesine öğrenin
- Cloud Firestore emülatör özelliklerini derinlemesine öğrenin
- Uygulamanızı Cloud Functions emülatörüne bağlama
- Extensions emülatörüyle faturalandırma maliyetlerini en aza indirirken Firebase Extensions değerini değerlendirin
Sonrasında ne olacak?
Yukarıda bağlantısı verilen belirli emülatörlerle ilgili konuları okuduğunuzdan emin olun. Ardından:
- Ö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ı testlerini ve Firebase Test SDK'sı: Güvenlik Kurallarını Test Et (Cloud Firestore) , Test Güvenlik Kurallarını (Realtime Database) ve Test Güvenlik Kurallarını (Cloud Storage for Firebase).