Firebase Local Emulator Suite'e geçmeden önce, bir Firebase projesi oluşturduğunuzdan, geliştirme ortamınızı kurduğunuzdan ve platformunuz için Firebase ile Başlayın konularına göre platformunuz için Firebase SDK'ları seçtiğiniz ve yüklediğinizden emin olun: iOS , Android veya Web .
Prototip ve test
Local Emulator Suite, Firebase Local Emulator Suite'e Giriş bölümünde açıklandığı gibi birkaç ürün öykünücüsü içerir. Üretimde kullandığınız Firebase ürünlerine karşılık gelen uygun gördüğünüz emülatör kombinasyonlarının yanı sıra ayrı emülatörlerle prototip oluşturabilir ve test edebilirsiniz.

Bu konu için, 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: bir 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ünün genellikle üç adımı olur:
Prototip özellikleri, öykünücüler ve Emulator Suite UI ile etkileşimli olarak bulunur.
Bir veritabanı öykünücüsü veya Cloud Functions öykünücüsü kullanıyorsanız, uygulamanızı öykünücülere bağlamak için tek seferlik bir adım gerçekleştirin.
Öykünücüler ve özel komut dosyalarıyla testlerinizi otomatikleştirin.
Bir Firebase projesini yerel olarak başlatın
CLI'yi kurduğunuzdan veya en son sürümüne güncellediğinizden emin olun.
curl -sL firebase.tools | bash
Henüz yapmadıysanız, Cloud Functions ve Cloud Firestore veya Realtime Database kullandığınızı belirtmek için ekrandaki komut istemlerini izleyerek mevcut çalışma dizinini bir Firebase projesi olarak başlatın:
firebase init
Proje dizininiz artık Firebase yapılandırma dosyalarını, veritabanı için bir Firebase Güvenlik Kuralları tanım dosyası, bulut işlevleri kodunu içeren bir functions
dizini ve diğer destekleyici dosyaları içerecektir.
Etkileşimli olarak prototip oluşturun
Local Emulator Suite, yeni özelliklerin hızlı bir şekilde prototipini oluşturmanıza izin vermek için tasarlanmıştır ve Suite'in yerleşik kullanıcı arabirimi, en kullanışlı prototip oluşturma araçlarından biridir. Bu biraz Firebase konsolunun yerel olarak çalışmasına benziyor.
Emulator Suite UI kullanarak, bir veritabanının tasarımını yineleyebilir, bulut işlevlerini 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 doğrulamak için günlükleri kontrol edebilir ve daha fazlasını yapabilirsiniz. Ardından, baştan başlamak istiyorsanız, veritabanınızı temizlemeniz ve yeni bir tasarım fikriyle baştan başlamanız yeterlidir.
Yerel Emulator Suite'i aşağıdakilerle başlattığınızda hepsi kullanılabilir:
firebase emulators:start
Varsayımsal uygulamamızın prototipini oluşturmak için, bir veritabanındaki metin girişlerini değiştirmek için temel bir bulut işlevini ayarlayıp test edelim ve onu tetiklemek için Emulator Suite kullanıcı arayüzünde bu veritabanını oluşturup dolduralım.
- Proje dizininizdeki
functions/index.js
dosyasını düzenleyerek veritabanı yazmalarıyla tetiklenen bir bulut işlevi oluşturun. Mevcut dosyanın içeriğini aşağıdaki kod parçacığı ile değiştirin. Bu işlev,messages
koleksiyonundaki belgelerde yapılan değişiklikleri dinler, bir belgeninoriginal
alanının içeriğini büyük harfe dönüştürür ve sonucu o belgeninuppercase
alanınauppercase
. -
firebase emulators:start
Yerel Emülatör Paketini başlatınfirebase emulators:start
. Birlikte çalışacak şekilde otomatik olarak yapılandırılan Cloud Functions ve veritabanı emülatörleri başlatılır. - Kullanıcı arayüzünü tarayıcınızda
http://localhost:4000
. Bağlantı noktası 4000, kullanıcı arayüzü için varsayılan değerdir, ancak Firebase CLI tarafından çıkarılan terminal mesajlarını kontrol edin. Kullanılabilir emülatörlerin durumuna dikkat edin. Bizim durumumuzda, Cloud Functions ve Cloud Firestore emülatörleri çalışacak.
- Kullanıcı arayüzünde, Firestore sekmesinde, Koleksiyona başla'yı tıklayın ve bir
messages
koleksiyonundaoriginal
ve değertest
ile yeni bir belge oluşturmak için istemleri izleyin. Bu, bulut işlevimizi tetikler. Kısa süre içinde "TEST" dizesiyle doldurulmuş yeni biruppercase
alanın göründüğünü gözlemleyin.
- Veritabanını güncellediğinde işlevinizin hatalarla çalışmadığını onaylamak için Günlükler sekmesini kontrol edin.
const functions = require('firebase-functions'); 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şlev kodunuz ve etkileşimli veritabanı düzenlemeleri arasında kolayca yineleme yapabilirsiniz.
Uygulamanızı emülatörlere bağlayın
Etkileşimli prototip oluşturmada 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 olacaksınız. Uygulamanızın davranışının doğru olduğunu onaylamak için veritabanı sekmesini ve işlevler için Emulator Suite Kullanıcı Arabirimindeki Günlükler sekmesini kullanmaya devam edeceksiniz.
Yerel Emülatör Paketinin yerel bir geliştirme aracı olduğunu unutmayın. Üretim veritabanlarınıza yazılanlar, yerel olarak prototip oluşturduğunuz işlevleri tetiklemez.
Uygulamanızın veritabanına yazmalarını sağlamaya geçmek 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.
Android
// 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);
iOS - Swift
let settings = Firestore.firestore().settings settings.host = "localhost:8080" settings.isPersistenceEnabled = false settings.isSSLEnabled = false Firestore.firestore().settings = settings
ağ
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("localhost", 8080); }
ağ
// Initialize your Web app as described in the Get started for Web // Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("localhost", 8080); }
Testlerinizi özel komut dosyalarıyla otomatikleştirin
Şimdi son genel iş akışı adımı için. Uygulama içi özelliğinizin prototipini oluşturduktan ve tüm platformlarınızda umut verici göründüğünde, son uygulama ve teste geçebilirsiniz. Birim testi ve CI iş akışları için, exec
komutuyla tek bir çağrıda öykünücüler başlatabilir, komut dosyası içeren testleri çalıştırabilir ve öykünücüleri kapatabilirsiniz:
firebase emulators:exec "./testdir/test.sh"
Bireysel emülatörleri daha derinlemesine keşfedin
Artık temel istemci tarafı iş akışının neye benzediğini gördüğünüze göre, Suite'teki bireysel öykünücüler hakkında, bunların sunucu tarafı uygulama geliştirme için nasıl kullanılacağı da dahil olmak üzere ayrıntılarla devam edebilirsiniz:
- Kimlik doğrulama öykünücüsünü prototip oluşturma iş akışlarınıza ekleyin
- Gerçek Zamanlı Veritabanı öykünücüsü özellikleri hakkında derinlemesine bilgi edinin
- Cloud Firestore emülatör özellikleri hakkında derinlemesine bilgi edinin
- Uygulamanızı Cloud Functions emülatörüne bağlayın
Sıradaki ne?
Yukarıda bağlantısı verilen belirli öykünücülerle ilgili konuları okuduğunuzdan emin olun. Sonra:
- Seçilmiş videolar ve ayrıntılı nasıl yapılır örnekleri için Firebase Emulators Training Playlist'i takip edin.
- Güvenlik Kuralları testini ve Firebase Test SDK'sını içeren gelişmiş kullanım örneklerini araştırın: Test Güvenlik Kuralları (Firestore) ve Test Güvenlik Kuralları (Gerçek Zamanlı Veritabanı) .