Firebase Local Emulator Suite ile çalışmaya başlamadan önce bir Firebase projesi oluşturduğunuzdan, geliştirme ortamınızı oluşturduğunuzdan ve platformunuz için Firebase SDK'larını seçip yüklediğinizden emin olun. Platformunuza göre Firebase'i kullanmaya başlama konularına göz atın: Apple, Android veya Web.
Prototip oluşturun ve test edin
Local Emulator Suite, Firebase Local Emulator Suite'e Giriş bölümünde açıklandığı gibi çeşitli ürün emülatörleri içerir. Üretimde kullandığınız Firebase ürünlerine karşılık gelen, uygun gördüğünüz şekilde, bağımsız emülatörlerle ve emülatör kombinasyonlarıyla prototip oluşturabilir ve test yapabilirsiniz.
Bu konuda, Local Emulator Suite iş akışını tanıtmak için tipik bir ürün kombinasyonunu kullanan bir uygulama üzerinde çalıştığınızı varsayalım: Firebase veritabanı ve bu veritabanındaki işlemler tarafından tetiklenen bulut işlevleri.
Firebase projenizi yerel olarak başlattıktan sonra, Local Emulator Suite kullanan geliştirme döngüsü genellikle üç adımdan oluşur:
Prototip özellikleri, emülatörlerle ve Emulator Suite UI ile etkileşimli olarak kullanılabilir.
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 gerçekleştirin.
Emülatörler ve özel komut dosyalarıyla testlerinizi otomatikleştirin.
Firebase projesini yerel olarak başlatma
CLI'yi yüklediğinizden veya en son sürümüne güncellediğinizden emin olun.
curl -sL firebase.tools | bash
Henüz yapmadıysanız mevcut çalışma dizinini Firebase projesi olarak başlatın. Ekrandaki talimatları uygulayarak Cloud Functions ve Cloud Firestore veya Realtime Database kullandığınızı belirtin:
firebase init
Proje dizininiz artık Firebase yapılandırma dosyalarını, veritabanı için Firebase Security Rules tanım dosyasını, Cloud Functions işlevlerini içeren bir functions
dizinini ve diğer destek dosyalarını içerir.
Etkileşimli prototip oluşturma
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ü ise en faydalı prototip oluşturma araçlarından biridir. Bu, Firebase konsolunu yerel olarak çalıştırmaya benzer.
Emulator Suite UI'ü kullanarak bir veritabanının tasarımını yineleyebilir, Cloud Functions içeren farklı veri akışlarını deneyebilir, Güvenlik Kuralları değişikliklerini değerlendirebilir, arka uç hizmetlerinizin nasıl performans gösterdiğini onaylamak için günlükleri kontrol edebilir ve daha fazlasını yapabilirsiniz. Ardından, baştan başlamak isterseniz, veritabanınızı temizlemeniz ve yeni bir tasarım fikriyle en baştan başlamanız yeterli.
Bu özelliklerin tamamı, Local Emulator Suite özelliğini şununla başlattığınızda kullanılabilir:
firebase emulators:start
Hayali uygulamamızın prototipini oluşturmak için bir veritabanındaki metin girişlerini değiştirmek üzere temel bir bulut işlevi oluşturup test edelim ve bu işlevi tetiklemek için Emulator Suite UI içinde bu veritabanını oluşturup dolduralım.
- Proje dizininizdeki
functions/index.js
dosyasını düzenleyerek veritabanı yazma işlemlerinden tetiklenen bir Cloud Functions işlevi oluşturun. Mevcut dosyanın içeriğini aşağıdaki snippet ile değiştirin. Bu işlev,messages
koleksiyonundaki dokümanlarda yapılan değişiklikleri izler, bir dokümanınoriginal
alanının içeriğini büyük harfe dönüştürür ve sonucu ilgili dokümanınuppercase
alanında depolar. - Local Emulator Suite'ü
firebase emulators:start
ile başlatın. Cloud Functions ve veritabanı emülatörleri, 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
. Kullanıcı arayüzü için varsayılan bağlantı noktası 4000'dir ancak Firebase KSA tarafından oluşturulan terminal mesajlarını kontrol edin. Mevcut emülatörlerin durumunu not edin. Bizim durumumuzda, Cloud Functions ve Cloud Firestore emülatörleri çalışacaktır.
- Kullanıcı arayüzündeki Firestore > Veri sekmesinde Koleksiyonu başlat'ı tıklayın ve bir
messages
koleksiyonunda alan adıoriginal
vetest
değerine sahip yeni bir doküman oluşturmak için istemleri uygulayın. Bu, bulut işlevimizi tetikler. Kısa süre sonra "TEST" dizesini içeren yeni biruppercase
alanının göründüğünü fark edin.
- Firestore > İstekler sekmesinde, bu isteklerin yerine getirilmesi kapsamında yapılan tüm Firebase Security Rules değerlendirmeleri de dahil olmak üzere, emülasyonlu veritabanınıza gönderilen istekleri inceleyin.
- İşlevinizin veritabanı güncellemesi sırasında hatayla karşılaşmadığını doğrulamak için Günlük sekmesini kontrol edin.
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}); });
Uygulama içi veritabanı erişim koduna dokunmadan, test paketlerini yeniden derlemeden ve yeniden çalıştırmadan, aradığınız veri akışını elde edene kadar bulut işlevi kodunuz ve etkileşimli veritabanı düzenlemeleri arasında kolayca geçiş yapabilirsiniz.
Uygulamanızı emülatörlere bağlama
Etkileşimli prototipleme konusunda iyi bir ilerleme kaydettiğinizde ve bir tasarıma karar verdiğinizde, uygun SDK'yı kullanarak uygulamanıza veritabanı erişim kodu eklemeye hazır olursunuz. Uygulamanızın davranışının doğru olduğunu onaylamak için veritabanı sekmesini ve işlevler için Emulator Suite UI ürünündeki Günlükler sekmesini kullanmaya devam edersiniz.
Local Emulator Suite'ün yerel bir geliştirme aracı olduğunu unutmayın. Üretim veritabanlarınıza yazma işlemleri, yerel olarak prototipini oluşturduğunuz işlevleri tetiklemez.
Uygulamanızın veritabanına yazma işlemi yapmasına geçmek için test sınıflarınızı veya uygulama içi yapılandırmanızı Cloud Firestoreemülatöre yönlendirmeniz gerekir.
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ştirme
Şimdi genel iş akışının son adımına geçelim. Uygulama içi özelliğinizin prototipini oluşturduktan sonra tüm platformlarınızda özellik umut verici görünüyorsa nihai uygulama ve test işlemlerine geçebilirsiniz. Birim testi ve CI iş akışları için exec
komutunu kullanarak tek bir çağrıda emülatörleri başlatabilir, komut dosyası testleri çalıştırabilir ve emülatörleri kapatabilirsiniz:
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 göründüğünü gördükten sonra, Suite'teki her bir emülatörle ilgili ayrıntılara (ör. sunucu tarafı uygulama geliştirme için nasıl kullanılacağı) geçebilirsiniz:
- Authentication emülatörünü prototip oluşturma iş akışlarınıza ekleme
- Realtime Database emülatör özellikleri hakkında ayrıntılı bilgi edinin.
- Cloud Storage for Firebase emülatör özellikleri hakkında ayrıntılı bilgi edinin.
- Cloud Firestore emülatör özellikleri hakkında ayrıntılı bilgi edinin.
- 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ı okumayı unutmayın. Ardından:
- Seçili videolar ve ayrıntılı "Nasıl Yapılır?" örnekleri için Firebase Emulators Eğitimi Oynatma Listesi'ni takip edin.
- Güvenlik Kuralları testini ve Firebase Test SDK'sını içeren gelişmiş kullanım alanlarını inceleyin: Güvenlik Kurallarını Test Etme (Cloud Firestore), Güvenlik Kurallarını Test Etme (Realtime Database) ve Güvenlik Kurallarını Test Etme (Cloud Storage for Firebase).