: Eğer Firebase Yerel Emülatörü Suite ile de atlamadan önce sizin platformu için Firebase konular ile başlama göre, emin olun Eğer bir Firebase proje oluşturduktan geliştirme ortamı kurmak ve seçilen ve platformu için Firebase SDK'larını yükledim iOS , Android veya Web .
Prototip ve test
Yerel Emulator Suite olarak açıklanan çeşitli ürün emülatörlerine içerir Firebase Yerel Emülatörü Suite giriş . Üretimde kullandığınız Firebase ürünlerine karşılık gelen, uygun gördüğünüz şekilde, tek tek emülatörlerin yanı sıra emülatör kombinasyonlarıyla prototip yapabilir 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ü genellikle üç adımdan oluşur:
Prototip özellikleri, emülatörler ve Emulator Suite UI ile etkileşimli olarak.
Bir veritabanı öykünücüsü veya Bulut İşlevleri ö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şlatma
curl -sL firebase.tools | bash
Zaten yapmadıysanız varsa, Cloud Fonksiyonlar ve ya Bulut Firestore veya Gerçek Zamanlı veritabanı kullanıyoruz belirtmek için ekrandaki talimatları takip bir Firebase projesi olarak geçerli çalışma dizini başlatmak:
firebase init
Projeniz dizini artık Firebase yapılandırma dosyaları, veritabanı için bir Firebase Güvenlik Kuralları tanım dosyası, bir içerecektir
functions dizini içeren bulut fonksiyonları kodu ve diğer destekleyici dosyaları.
Prototip etkileşimli olarak
Local Emulator Suite, yeni özellikleri hızlı bir şekilde prototiplemenize izin vermek için tasarlanmıştır ve Suite'in yerleşik kullanıcı arayüzü, en kullanışlı prototipleme araçlarından biridir. Bu biraz Firebase konsolunun yerel olarak çalışmasına benziyor.
Emulator Suite UI'yi kullanarak bir veritabanının tasarımını yineleyebilir, bulut işlevlerini içeren farklı veri akışlarını deneyebilir, Güvenlik Kurallarındaki değişiklikleri 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, yeniden başlamak istiyorsanız, veritabanınızı temizleyin ve yeni bir tasarım fikriyle yeni bir başlangıç yapın.
Local 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şlevi ayarlayıp test edelim ve onu tetiklemek için bu veritabanını hem oluşturup hem de Emulator Suite UI'de dolduralım.
- Düzenleyerek veritabanı yazma tetiklediği bir bulut işlevi oluşturma
functions/index.jsproje dizinine. Mevcut dosyanın içeriğini aşağıdaki snippet ile değiştirin. Belgeler değişiklikler için bu işlev dinler
messageskoleksiyonla, belgenin içeriğini dönüştürür
originalsöz konusu belgenin sonucu büyük harfe alanı ve depolar
uppercasealanda.
- Yerel Emulator Suite başlatın
firebase emulators:start. Bulut İşlevleri ve veritabanı öykünücüleri başlatılır ve birlikte çalışacak şekilde otomatik olarak yapılandırılır.
- En tarayıcınızda UI görüntüle
http://localhost:4000. Bağlantı noktası 4000, kullanıcı arabirimi için varsayılandır, ancak Firebase CLI tarafından çıkan terminal mesajlarını kontrol edin. Kullanılabilir emülatörlerin durumunu not edin. Bizim durumumuzda Cloud Functions ve Cloud Firestore emülatörleri çalışıyor olacak.
- Arayüzünde Firestore sekmesinde, Veri alt sekmesinde, Başlangıç koleksiyonunu tıklayın ve yeni bir belge oluşturmak için yönergeleri izleyin
messagesAlanAdı ile, koleksiyon
originalve değer
test. Bu, bulut işlevimizi tetikler. Yeni gözlemleyin
uppercasealan dize "TEST" ile doldurulur, kısa bir süre görünür.
- Firestore günü> İstekleri sekmesini, incelemek tüm Firebase Güvenlik Kuralları değerlendirmeler de dahil olmak üzere Taklit veritabanına yapılan istekler bu istekleri yerine getirmek bir parçası olarak seslendirdi.
- O güncellenen veritabanı olarak hataları girmek vermedi işlevinizi onaylamak için Kayıtlar 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}); });
Aradığınız veri akışını elde edene kadar, uygulama içi veritabanı erişim koduna dokunmadan, test takımlarını yeniden derlemeden ve yeniden çalıştırmadan, bulut işlev kodunuz ve etkileşimli veritabanı düzenlemeleriniz arasında kolayca yineleyebilirsiniz.
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. Sen işlevleri için, Emulator Suite UI Kayıtlar sekmesi uygulamanızın davranışı doğru olduğunu teyit etmek için, veritabanı sekmesini kullanmaya devam ve edeceğiz.
Local Emulator Suite'in yerel bir geliştirme aracı olduğunu unutmayın. Üretim veritabanlarınıza yazma işlemleri, yerel olarak prototiplediğiniz işlevleri tetiklemez.
Uygulamanızın veritabanına yazma yapmasını sağlamak için test sınıflarınızı veya uygulama içi yapılandırmanızı Cloud Firestore öykünücüsü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 - Hızlı
let settings = Firestore.firestore().settings settings.host = "localhost:8080" settings.isPersistenceEnabled = false settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web sürümü 9
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, 'localhost', 8080);
Web sürümü 8
// 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); }
Özel komut dosyalarıyla testlerinizi otomatikleştirin
Şimdi son genel iş akışı adımı için. Özelliğinizi uygulama içinde prototipledikten ve tüm platformlarınızda umut verici göründüğünde, nihai uygulamaya ve teste dönebilirsiniz. Birim test için ve CI iş akışları, sen emülatörler başlatmak senaryolu testler ve tek bir çağrıda emülatörlerine kapatabilirsiniz
exec komutu:
firebase emulators:exec "./testdir/test.sh"
Bireysel öykünücüleri daha derinlemesine keşfedin
Artık temel istemci tarafı iş akışının neye benzediğini gördüğünüze göre, Suite'teki tek tek ö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:
- Prototip oluşturma iş akışlarınıza Kimlik Doğrulama öykünücüsü ekleyin
- Gerçek Zamanlı Veritabanı öykünücüsü özellikleri hakkında derinlemesine bilgi edinin
- Cloud Storage öykünücüsü özellikleri hakkında derinlemesine bilgi edinin
- Cloud Firestore öykünücüsü özellikleri hakkında ayrıntılı bilgi edinin
- Uygulamanızı Cloud Functions öykünücüsüne bağlayın
Sırada ne var?
Yukarıda bağlantılı belirli emülatörlerle ilgili konuları okuduğunuzdan emin olun. Sonra:
- Bir küratörlüğünü video grubunun ve ayrıntılı örneklerle nasıl yapılır için, izleyin Firebase Emulators Eğitim Oynatma Listesi .
- : Test Güvenlik Kuralları ve Firebase Testi SDK karıştığı ileri kullanım durumları araştırmak Testi Güvenlik Kuralları (Bulut Firestore) , Testi Güvenlik Kuralları (Gerçek Zamanlı Veri Tabanı) ve Deney Güvenlik Kuralları (Bulut Depolama) .