Uygulamanızı Cloud Storage for Firebase emülatörüne bağlamadan önce genel Firebase Local Emulator Suite iş akışını anladığınızdan, Local Emulator Suite'ı yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.
Bir Firebase projesi seçin
Firebase Local Emulator Suite, tek bir Firebase projesi için ürünleri taklit eder.
Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce çalışma dizininizde firebase use
komutunu çalıştırın. Alternatif olarak, her bir emülatör komutuna --project
işaretini iletebilirsiniz.
Local Emulator Suite Gerçek Firebase projelerinin ve demo projelerinin emülasyonunu destekler.
Proje türü | Özellikler | Emülatörlerle kullanma |
---|---|---|
Real |
Gerçek bir Firebase projesi, sizin oluşturup yapılandırdığınız (büyük olasılıkla Firebase konsolu üzerinden) bir projedir. Gerçek projelerde veritabanı örnekleri, depolama paketleri, işlevler veya söz konusu Firebase projesi için ayarladığınız 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ülasyonunu yapmadığınız tüm ürünler için uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama paketi, işlev vb.) etkileşimde bulunur. |
Demo |
Demo Firebase projesinde gerçek Firebase yapılandırması ve canlı kaynaklar yoktur. Bu projelere genellikle codelab'ler veya diğer eğitimler aracılığıyla erişilir. Demo projelerin proje kimlikleri |
Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörlerle etkileşimde bulunur. Uygulamanız, emülatörün çalışmadığı bir kaynakla etkileşime girmeye çalışırsa bu kod başarısız olur. |
Mümkün olan her durumda demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:
- Emülatörleri Firebase projesi oluşturmadan çalıştırabileceğiniz için daha kolay kurulum
- Kodunuz yanlışlıkla emüle edilmemiş (üretim) kaynakları çağırdığında 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 sunar.
Uygulamanızı emülatörlerle iletişim kuracak şekilde yapılandırma
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şimde bulunacak şekilde aşağıdaki gibi ayarlayın.
Kotlin
// 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 aynı anda çalıştırıldığında otomatik olarak birlikte çalışırlar.
Admin SDK
Firebase Admin SDK, FIREBASE_STORAGE_EMULATOR_HOST
ortam değişkeni ayarlandığında Cloud Storage for Firebase emülatörüne otomatik olarak bağlanır:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Cloud Functions emülatörünün Cloud Functions emülatörünün farkında olduğunu unutmayın. Bu nedenle, Cloud Functions ve Cloud Storage for Firebase emülatörleri arasındaki entegrasyonları test ederken bu adımı atlayabilirsiniz.Cloud Storage for Firebase Ortam değişkeni, Cloud Storage for Firebase içinde Admin SDK 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 KSA'yı kullanarak ayarladığınız proje kimliğini belirtmeniz gerekir.
Doğrudan initializeApp
öğesine bir proje kimliği iletebilir veya GCLOUD_PROJECT
ortam değişkenini ayarlayabilirsiniz.
Node.js Admin SDK
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 temel bir veri grubu tanımlayın, ardından bu grubu 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
Kapatma sırasında verileri dışa aktarması için emülatöre talimat verebilirsiniz. Bunun için bir dışa aktarma yolu belirtebilir veya --import
işaretine iletilen yolu kullanabilirsiniz.
firebase emulators:start --import=./dir --export-on-exit
Bu veri içe ve dışa aktarma seçenekleri, firebase emulators:exec
komutuyla da çalışır. Daha fazla bilgi için emülatör komut referansına bakın.
Cloud Storage for Firebase emülatörünün üretimden farkı
İstemci 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 şekilde uyumludur. Tüm Firebase komutlarının normal Firebase SDK'ları (Web, Android ve Apple platformları) arasında çalışması beklenir.
Sunucu tarafı uygulamaların test edilmesiyle ilgili sınırlamalar vardır. Firebase Admin SDK'ları Google Cloud API yüzeyini kullanır ve bu API'nin tüm uç noktaları taklit edilmez. Genel bir kural olarak, istemci SDK'lerinden yapılabilen her şey (dosya yükleme veya silme, meta verileri alma ve ayarlama) Yönetici SDK'lerinden de kullanılabilir ancak bunun dışındaki işlemler kullanılamaz. Önemli hariç tutmalar aşağıda listelenmiştir.
Google Cloud Storage'dan farklılıklar
Depolama emülatörü de dahil olmak üzere Cloud Storage for Firebase ürünü, Firebase uygulamaları geliştirirken çok faydalı 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 farklıdır:
- Cloud Storage for Firebase şu anda depolama paketleri oluşturma, listeleme, alma veya silme için
Bucket
API'lerini desteklememektedir. - Google Cloud Storage Objects API'den şu yöntemler desteklenir:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
Cloud IAM
Firebase Emulator Suite, çalıştırma için IAM ile ilgili davranışları kopyalamaya veya bunlara uymaya çalışmaz. Emülatörler, sağlanan Firebase Security Rules'a uyar. Ancak normalde IAM'in kullanılacağı durumlarda (ör. Cloud Functions çağırma hizmet hesabını ve dolayısıyla izinleri ayarlamak için) emülatör yapılandırılamaz ve geliştirici makinenizde genel olarak kullanılabilen hesabı doğrudan yerel bir komut dosyası çalıştırmaya benzer şekilde 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üzeyinde yapılandırmaları desteklemez. Firebase, bu desteği zaman içinde iyileştirmeyi amaçlamaktadır.
Sonrasında ne olacak?
- Seçilmiş bir dizi video ve ayrıntılı "Nasıl Yapılır?" örnekleri için Firebase Emulators Eğitimi Oynatma Listesi'ni inceleyin.
- Tetiklenen işlevler Cloud Storage for Firebase ile tipik bir entegrasyon olduğundan Cloud Functions for Firebase emülatörü hakkında daha fazla bilgiyi İşlevleri yerel olarak çalıştırma bölümünde bulabilirsiniz.