Firebase Local Emulator Suite kullanmaya başlamadan önce bir Firebase projesi oluşturduğunuzdan, geliştirme ortamınızı ayarladığınızdan ve platformunuz için Firebase SDK'larını seçip yüklediğinizden emin olun. Bunun için platformunuzla ilgili Firebase'i kullanmaya başlama konularını inceleyin: Apple, Android veya Web.
Prototip oluşturma ve test etme
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 göre, uygun gördüğünüz şekilde emülatör kombinasyonlarının yanı sıra ayrı emülatörlerle de prototip oluşturabilir ve test yapabilirsiniz.
Bu konu kapsamında, Local Emulator Suite iş akışını tanıtmak için tipik bir ürün kombinasyonu kullanan bir uygulama üzerinde çalıştığınızı varsayalım: Firebase veritabanı ve bu veritabanındaki işlemler tarafından tetiklenen Cloud Functions işlevleri.
Firebase projenizi yerel olarak başlattıktan sonra Local Emulator Suite kullanan geliştirme döngüsü genellikle üç adımdan oluşur:
Özelliklerin prototiplerini emülatörler ve Emulator Suite UI ile etkileşimli olarak oluşturun.
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 uygulayın.
Emülatörler ve özel komut dosyalarıyla testlerinizi otomatikleştirin.
Firebase projesini yerel olarak başlatma
CLI'yı yüklediğinizden veya en son sürümüne güncellediğinizden emin olun.
curl -sL firebase.tools | bashHenüz yapmadıysanız geçerli çalışma dizinini Firebase projesi olarak ilk kullanıma hazırlayın. Cloud Functions ve Cloud Firestore veya Realtime Database kullandığınızı belirtmek için ekrandaki talimatları uygulayın:
firebase initProje dizininizde artık Firebase yapılandırma dosyaları, veritabanı için bir Firebase Security Rules tanım dosyası, Cloud Functions kodunu içeren bir functions dizini ve diğer destekleyici dosyalar bulunur.
Etkileşimli prototip oluşturma
Local Emulator Suite, yeni özelliklerin prototiplerini hızlıca oluşturmanıza olanak tanıyacak şekilde tasarlanmıştır. Suite'in yerleşik kullanıcı arayüzü, en kullanışlı prototip oluşturma araçlarından biridir. Bu, Firebase konsolunu yerel olarak çalıştırmaya benzer.
Emulator Suite UI ile bir veritabanının tasarımını yineleyebilir, Cloud Functions işlevlerini içeren farklı veri akışlarını deneyebilir, güvenlik kuralları değişikliklerini değerlendirebilir, arka uç hizmetlerinizin performansını doğrulamak için günlükleri kontrol edebilir ve daha fazlasını yapabilirsiniz. Ardından, baştan başlamak isterseniz veritabanınızı temizleyip yeni bir tasarım fikriyle yeni bir başlangıç yapabilirsiniz.
Local Emulator Suite'i şu yöntemlerle başlattığınızda tüm bu özelliklerden yararlanabilirsiniz:
firebase emulators:startVarsayımsal uygulamamızın prototipini oluşturmak için bir veritabanındaki metin girişlerini değiştirecek temel bir Cloud Functions işlevi ayarlayıp test edelim. Ardından, bu işlevi tetiklemek için Emulator Suite UI içinde söz konusu veritabanını oluşturup dolduralım.
- Proje dizininizdeki
functions/index.jsdosyasını düzenleyerek veritabanı yazma işlemleriyle 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,messageskoleksiyonundaki dokümanlarda yapılan değişiklikleri dinler, dokümanınoriginalalanındaki içerikleri büyük harfe dönüştürür ve sonucu ilgili dokümanınuppercasealanında depolar. - Local Emulator Suite'ı
firebase emulators:startile başlatın. Cloud Functions ve veritabanı emülatörleri, birlikte çalışacak şekilde otomatik olarak yapılandırılmış olarak başlatılır. - Kullanıcı arayüzünü tarayıcınızda
http://localhost:4000adresinde görüntüleyin. 4000 numaralı bağlantı noktası, kullanıcı arayüzü için varsayılan bağlantı noktasıdır ancak Firebase CLI tarafından oluşturulan terminal mesajları çıkışını kontrol edin. Kullanılabilir emülatörlerin durumuna dikkat edin. Bizim örneğimizde Cloud Functions ve Cloud Firestore emülatörleri çalıştırılacak.
- Kullanıcı arayüzünde, Firestore > Veri sekmesinde Koleksiyon başlat'ı tıklayın ve talimatları uygulayarak
messageskoleksiyonunda, alan adıoriginalve değeritestolan yeni bir doküman oluşturun. Bu işlem, Cloud Functions işlevimizi tetikler. Kısa süre sonra "TEST" dizesiyle doldurulmuş yeni biruppercasealanının göründüğünü göreceksiniz.
- Firestore > Requests (Firestore > İstekler) sekmesinde, emüle edilmiş veritabanınıza yapılan istekleri inceleyin. Bu istekleri yerine getirmek için yapılan tüm Firebase Security Rules değerlendirmeleri de bu sekmede görebilirsiniz.
- İşlevinizin veritabanını güncellerken hatayla karşılaşmadığını doğrulamak için Logs (Günlükler) 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 derleyip yeniden çalıştırmadan, istediğiniz veri akışını elde edene kadar Cloud Functions işlevi kodunuz ile etkileşimli veritabanı düzenlemeleri arasında kolayca geçiş yapabilirsiniz.
Uygulamanızı emülatörlere bağlama
Etkileşimli prototip oluşturma 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 doğru şekilde çalıştığını doğrulamak için veritabanı sekmesini ve işlevler için Emulator Suite UI uygulamasındaki Günlükler sekmesini kullanmaya devam edeceksiniz.
Local Emulator Suite aracını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ını sağlamak için test sınıflarınızı veya uygulama içi yapılandırmanızı Cloud Firestore emülatörüne yönlendirmeniz gerekir.
Kotlin
// 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
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance; // Connects to the Firestore Emulator running on port 8080 db.Settings.Host = "127.0.0.1:8080"; db.Settings.SslEnabled = false;
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. Özelliğinizin uygulama içi prototipini oluşturduktan ve tüm platformlarınızda iyi sonuçlar aldıktan sonra son uygulama ve test aşamasına geçebilirsiniz. Birim testi ve CI iş akışları için emülatörleri başlatabilir, komut dosyasıyla yazılmış testleri çalıştırabilir ve emülatörleri tek bir çağrıda exec komutuyla kapatabilirsiniz:
firebase emulators:exec "./testdir/test.sh"Emülatörleri daha ayrıntılı inceleme
Temel istemci tarafı iş akışının nasıl göründüğünü öğrendiğinize göre, Suite'teki emülatörlerin ayrıntılarını incelemeye devam edebilirsiniz. Bu ayrıntılar arasında, emülatörlerin sunucu tarafı uygulama geliştirme için nasıl kullanılacağı da yer alır:
- Prototip oluşturma iş akışlarınıza Authentication emülatörünü 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ğerlendirme
Sonrasında ne olacak?
Yukarıda bağlantısı verilen belirli emülatörlerle ilgili konuları okuduğunuzdan emin olun. Ardından:
- Seçilmiş videolar ve ayrıntılı nasıl yapılır örnekleri için Firebase Emülatörleri Eğitim Oynatma Listesi'ni takip edin.
- Güvenlik Kuralları testini ve Firebase Test SDK'sını içeren ileri düzey 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).