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.
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
koleksiyonundaki dokümanlarda yapılan değişiklikleri dinler, bir dokümanınoriginal
alanının içeriğini şuna dönüştürür: büyük harfle yazar ve sonucu ilgili dokümanınuppercase
girin. - 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 Cloud Firestore emülatörleri çalışır.
. - Kullanıcı arayüzünde, Firestore > Veri sekmesinde
Toplama işlemini başlatın ve
Alan adı
original
ve değere sahipmessages
koleksiyonutest
. Bu, bulut işlevimizi tetikler. Yeni biruppercase
alanı, dizeyle doldurulmuş olarak kısa süre içinde görünür. "TEST".
. - Firestore > İstekler sekmesinde, yapılan Firebase Security Rules değerlendirmenin tamamı dahil olmak üzere, kapsamında değerlendirilecektir.
- İşlevinizde hata olmadığını onaylamak için Günlükler sekmesini kontrol edin. yeniden yüklemeniz gerekir.
const functions = require('firebase-functions/v1'); exports.makeUppercase = functions.firestore.document('/messages/{documentId}') .onCreate((snap, context) => { const original = snap.data().original; console.log('Uppercasing', context.params.documentId, original); const uppercase = original.toUpperCase(); return snap.ref.set({uppercase}, {merge: true}); });
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 için test sınıflarınızı veya uygulama içi yapılandırmanızı Cloud Firestore emülatörü kullanı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 firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
Ö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).