Uygulamanızı Cloud Storage for Firebase emülatörüne bağlamadan önce Firebase Local Emulator Suite iş akışının tamamını anladığınızdan, Local Emulator Suite'yi yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.
Firebase projesi seçme
Firebase Local Emulator Suite, tek bir Firebase projesinin ürünlerini taklit eder.
Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce CLI'de çalışma dizininizde firebase use
komutunu çalıştırın. Alternatif olarak, her emülatör komutuna --project
işaretini de iletebilirsiniz.
Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin emülasyonunu destekler.
Proje türü | Özellikler | Emülatörlerle kullanma |
---|---|---|
Gerçek |
Gerçek Firebase projesi, oluşturduğunuz ve yapılandırdığınız (muhtemelen Firebase konsolu üzerinden) projedir. Gerçek projelerde veritabanı örnekleri, depolama alanı paketleri, işlevler veya söz konusu Firebase projesi için oluşturduğunuz diğer kaynaklar gibi canlı kaynaklar bulunur. |
Gerçek Firebase projeleriyle çalışırken desteklenen ürünlerin herhangi biri veya tümü için emülatör çalıştırabilirsiniz. Emülasyon oluşturmadığınız ürünlerde uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama alanı paketi, işlev vb.) etkileşim kurar. |
Demo |
Demo Firebase projelerinde gerçek Firebase yapılandırması ve canlı kaynak bulunmaz. Bu projelere genellikle codelab'ler veya diğer eğitici içerikler üzerinden erişilir. Demo projelerin proje kimliklerinde |
Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörlerle etkileşim kurar. Uygulamanız, emülatörünün çalışmadığı bir kaynağa etkileşime geçmeye çalışırsa bu kod başarısız olur. |
Mümkün olduğunda demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:
- Firebase projesi oluşturmadan emülatörleri çalıştırabileceğiniz için daha kolay kurulum
- Kodunuz yanlışlıkla taklit edilmeyen (üretim) kaynakları çağırırsa veri değişikliği, kullanım ve faturalandırma olasılığı olmadığından daha güçlü güvenlik
- SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.
Uygulamanızı, emülatörlerle konuşacak şekilde donatma
Android, Apple platformları ve web SDK'ları
Uygulama içi yapılandırmanızı veya test sınıflarınızı, Cloud Storage for Firebase emülatörüyle etkileşime geçecek şekilde aşağıdaki gibi ayarlayı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 storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Emülatör kullanarak Cloud Storage for Firebase etkinlikleri tarafından tetiklenen Cloud Functions'ı test etmek için ek kurulum gerekmez. Cloud Storage for Firebase ve Cloud Functions emülatörleri birlikte çalışırken otomatik olarak birlikte çalışır.
Admin SDK
FIREBASE_STORAGE_EMULATOR_HOST
ortam değişkeni ayarlandığında Firebase Admin SDK'ler otomatik olarak Cloud Storage for Firebase emülatörüne bağlanır:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Cloud Functions emülatörünün, Cloud Storage for Firebase emülatörünü otomatik olarak algıladığını unutmayın. Bu nedenle, Cloud Functions ve Cloud Storage for Firebase emülatörleri arasındaki entegrasyonları test ederken bu adımı atlayabilirsiniz. Ortam değişkeni, Cloud Storage for Firebase'teki Yönetici SDK'sı için otomatik olarak ayarlanır.
Admin SDK kodunuzun başka bir ortamda çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız Firebase CLI'yi kullanarak ayarladığınız proje kimliğini belirtmeniz gerekir.
Proje kimliğini doğrudan initializeApp
işlevine iletebilir veya GCLOUD_PROJECT
ortam değişkenini ayarlayabilirsiniz.
Node.js Yönetici SDK'sı
admin.initializeApp({ projectId: "your-project-id" });
Ortam Değişkeni
export GCLOUD_PROJECT="your-project-id"
Verileri içe ve dışa aktarma
Veritabanı ve Cloud Storage for Firebase emülatörleri, çalışan bir emülatör örneğinden veri dışa aktarmanıza olanak tanır. Birim testlerinizde veya sürekli entegrasyon iş akışlarınızda kullanılacak bir referans veri kümesi tanımlayın ve ardından ekip arasında paylaşılmak üzere dışa aktarın.
firebase emulators:export ./dir
Testlerde, emülatör başlatılırken temel verileri içe aktarın.
firebase emulators:start --import=./dir
Bir dışa aktarma yolu belirterek veya --import
işaretçisine iletilen yolu kullanarak, kapatma sırasında verileri dışa aktarması için emülatöre talimat verebilirsiniz.
firebase emulators:start --import=./dir --export-on-exit
Bu veri içe aktarma ve dışa aktarma seçenekleri firebase emulators:exec
komutuyla da çalışır. Daha fazla bilgi için emülatör komut referansı bölümüne bakın.
Cloud Storage for Firebase emülatörünün üretimden farkı
Müşteri uygulamalarının test edilmesi için Cloud Storage for Firebase emülatörü, Firebase API yüzey alanı açısından üretimle neredeyse mükemmel bir şekilde uyumludur. Tüm Firebase komutlarının normal Firebase SDK'ları (Web, Android ve Apple platformları) arasında çalışacağı beklenir.
Sunucu tarafı uygulamaların test edilmesiyle ilgili sınırlamalar vardır. Firebase Yönetici SDK'ları Google Cloud API yüzeyini kullanır ve bu API'nin tüm uç noktaları taklit edilmez. Genel kural olarak, istemci SDK'larından yapılabilecek her şey (dosya yükleme veya silme, meta verileri alma ve ayarlama) Yönetici SDK'larından da kullanılabilir. Bunun dışındaki hiçbir şey kullanılamaz. Önemli istisnalar aşağıda listelenmiştir.
Google Cloud Storage ile arasındaki farklar
Depolama emülatörü dahil olmak üzere Cloud Storage for Firebase ürünü, Firebase uygulamaları geliştirmek için çok yararlı olan depolama nesnelerine odaklanan Google Cloud Storage (GCS) işlevlerinin bir alt kümesini sağlar. Cloud Storage for Firebase, GCS'den şu yönleriyle ayrılır:
- Cloud Storage for Firebase, depolama alanı paketleri oluşturma, listeleme, alma veya silme için
Bucket
API'lerini şu anda desteklememektedir. - Google Cloud Storage Objects API'de aşağıdaki yöntemler desteklenir:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
Cloud IAM
Firebase Emulator Suite, IAM ile ilgili herhangi bir çalışma davranışını kopyalamaya veya bu davranışa uymaya çalışmaz. Emülatörler, sağlanan Firebase Güvenlik Kuralları'na uyar. Ancak IAM'ın normalde kullanılacağı durumlarda (ör. Cloud Functions'ın çağıracağı hizmet hesabını ve dolayısıyla izinleri ayarlamak için) emülatör yapılandırılamaz ve doğrudan yerel bir komut dosyası çalıştırmaya benzer şekilde, geliştirici makinenizdeki herkese açık hesabı kullanır.
Pub/Sub bildirimleri
Cloud Storage for Firebase emülatörü, Cloud Pub/Sub emülatörüyle entegre olmadığından depolama nesnesi değişiklikleri için kanal/bildirim oluşturmayı desteklemez. Cloud Functions Depolama alanı tetikleyicilerini doğrudan kullanmanızı öneririz.
Paket düzeyinde meta veriler
Cloud Storage for Firebase emülatörü, depolama sınıfı, paket düzeyinde CORS yapılandırması, etiketler veya saklama politikaları dahil olmak üzere paket düzeyindeki hiçbir yapılandırmayı desteklemez. Firebase, bu desteği zaman içinde iyileştirmeyi planlamaktadır.
Sonrasında ne olacak?
- Seçili videolar ve ayrıntılı "Nasıl Yapılır?" örnekleri için Firebase Emulators Eğitimi Oynatma Listesi'ni takip edin.
- Tetikleyici işlevler, Cloud Storage for Firebase ile tipik bir entegrasyon olduğundan İşlevleri yerel olarak çalıştırma başlıklı makalede Cloud Functions for Firebase emülatör hakkında daha fazla bilgi edinin.