Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Cloud FunctionsemülatörCloud Functions içerir:
- HTTPS işlevleri
- Çağrılabilir işlevler
- Görev sırası işlevleri
- Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, desteklenen Firebase uyarıları ve Cloud Pub/Sub'dan tetiklenen arka plan işlevleri.
Üretime dağıtmadan önce test etmek için işlevleri yerel olarak çalıştırabilirsiniz.
Firebase CLI'yı yükleme
Cloud Functions emülatörünü kullanmak için önce Firebase CLI'yı yükleyin:
npm install -g firebase-tools
Yerel emülatörü kullanmak için Cloud Functions şunlara bağlı olmalıdır:
firebase-admin
sürümü8.0.0
veya sonraki sürümler.firebase-functions
sürümü3.0.0
veya sonraki sürümler.
Yönetici kimlik bilgilerini ayarlama (isteğe bağlı)
İşlev testlerinizin Firebase Admin SDK aracılığıyla Google API'leri veya diğer Firebase API'leriyle etkileşim kurmasını istiyorsanız yönetici kimlik bilgilerini ayarlamanız gerekebilir.
- Cloud Firestore ve Realtime Database tetikleyicileri zaten yeterli kimlik bilgilerine sahiptir ve ek kurulum gerektirmez.
- Authentication ve FCM gibi Firebase API'leri veya Cloud Translation ya da Cloud Speech gibi Google API'leri de dahil olmak üzere diğer tüm API'ler için bu bölümde açıklanan kurulum adımları gereklidir. Bu, Cloud Functions kabuğunu veya
firebase emulators:start
'yi kullanıyor olmanıza bakılmaksızın geçerlidir.
Emüle edilen işlevler için yönetici kimlik bilgilerini ayarlamak üzere:
- Google Cloud konsolunun Hizmet Hesapları bölmesini açın.
- App Engine varsayılan hizmet hesabı'nın seçildiğinden emin olun ve sağdaki seçenekler menüsünü kullanarak Anahtar oluştur'u seçin.
- İstendiğinde anahtar türü olarak JSON'u seçin ve Oluştur'u tıklayın.
Google varsayılan kimlik bilgilerinizi indirilen anahtarı işaret edecek şekilde ayarlayın:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Bu adımları tamamladıktan sonra işlev testleriniz Admin SDK'yı kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir Authentication tetikleyici test edilirken emüle edilen işlev admin.auth().getUserByEmail(email)
işlevini çağırabilir.
İşlev yapılandırmasını ayarlama (isteğe bağlı)
Özel işlev yapılandırma değişkenleri kullanıyorsanız önce yerel ortamınızda özel yapılandırmanızı almak için komutu çalıştırın (bunu functions
dizininde çalıştırın):
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Emulator Suite'i çalıştırma
gibi komutlarla dönüştürücünüzü izleme modunda çalıştırabilirsiniz.tsc -w
Cloud Functions emülatörünü çalıştırmak için emulators:start
komutunu kullanın:
firebase emulators:start
emulators:start
komutu, firebase
init
kullanarak yerel projenizde başlattığınız ürünlere göre Cloud Functions, Cloud Firestore, Realtime Database ve Firebase Hosting için emülatörleri başlatır. Belirli bir emülatörü başlatmak istiyorsanız --only
işaretini kullanın:
firebase emulators:start --only functions
Emülatörler başlatıldıktan sonra bir test paketi veya test komut dosyası çalıştırmak istiyorsanız emulators:exec
komutunu kullanın:
firebase emulators:exec "./my-test.sh"
Uygulamanızı emülatörlerle iletişim kuracak şekilde yapılandırma
Uygulamanızı emülatörlerle etkileşime geçecek şekilde ayarlamak için bazı ek yapılandırmalar yapmanız gerekebilir.
Uygulamanızı çağrılabilir işlevler için araçlandırın
Prototip ve test etkinliklerinizde çağrılabilir arka uç işlevleri kullanılıyorsa Cloud Functions for Firebase emülatörüyle etkileşimi şu şekilde yapılandırı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 functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
Uygulamanızı HTTPS işlevleri emülasyonu için yapılandırma
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel emülatörden sunulur:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
Örneğin, varsayılan ana makine bağlantı noktası ve bölgeye sahip basit bir helloWorld
işlevi şu adreste sunulur:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Uygulamanızı görev sırası işlevleri emülasyonu için araçlandırın
Emülatör, tetikleyici tanımlarına göre otomatik olarak emüle edilmiş görev kuyrukları oluşturur ve Yönetici SDK'sı, CLOUD_TASKS_EMULATOR_HOST
ortam değişkeni aracılığıyla çalıştığını algılarsa sıraya alınmış istekleri emülatöre yönlendirir.
Üretimde kullanılan dağıtım sisteminin, emülatörde uygulanan sistemden daha karmaşık olduğunu unutmayın. Bu nedenle, emüle edilen davranışın üretim ortamlarını tam olarak yansıtmasını beklememelisiniz. Emülatördeki parametreler, görevlerin gönderilme ve yeniden denenme hızına üst sınırlar getirir.
Uygulamanızı arka planda tetiklenen işlevlerin emülasyonu için araçlandırın
Cloud Functions emülatörü, aşağıdaki kaynaklardan arka planda tetiklenen işlevleri destekler:
- Realtime Database emülatör
- Cloud Firestore emülatör
- Authentication emülatör
- Pub/Sub emülatör
- Firebase uyarıları emülatörü
Arka plan etkinliklerini tetiklemek için Emulator Suite UI kullanarak arka uç kaynaklarını değiştirin veya uygulamanızı ya da test kodunuzu platformunuz için SDK'yı kullanarak emülatörlere bağlayın.
Uzantılar tarafından yayınlanan özel etkinlikler için test işleyicileri
Firebase Extensions özel etkinliklerini Cloud Functions v2 ile işlemek için uyguladığınız işlevlerde, Cloud Functions emülatörü Eventarc tetikleyicilerini desteklemek üzere Eventarc emülatörüyle eşleşir.
Etkinlik yayan uzantılar için özel etkinlik işleyicilerini test etmek istiyorsanız Cloud Functions ve Eventarc emülatörlerini yüklemeniz gerekir.
Eventarc emülatörü çalışıyorsa Cloud Functions çalışma zamanı, geçerli işlemde EVENTARC_EMULATOR
ortam değişkenini localhost:9299
olarak ayarlar. Firebase Admin SDK ortam değişkeni ayarlandığında EVENTARC_EMULATOR
, Eventarc emülatörüne otomatik olarak bağlanır. Varsayılan bağlantı noktasını YapılandırmaLocal Emulator Suite bölümünde açıklandığı gibi değiştirebilirsiniz.
Ortam değişkenleri düzgün şekilde yapılandırıldığında Firebase Admin SDK, etkinlikleri otomatik olarak Eventarc emülatörüne gönderir. Buna karşılık Eventarc emülatörü, kayıtlı işleyicileri tetiklemek için Cloud Functions emülatörüne geri çağrı yapar.
İşleyici yürütmeyle ilgili ayrıntılar için Emulator Suite UI bölümündeki işlev günlüklerini kontrol edebilirsiniz.
Diğer hizmetlerle etkileşimler
Emülatör paketi, ürünler arası etkileşimlerin test edilmesini sağlayan birden fazla emülatör içerir.
Cloud Firestore
Firebase Admin SDK'sını kullanarak Cloud Firestore yazan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Firestore emülatörüne gönderilir. Bu yazma işlemleri başka işlevleri tetiklerse bu işlevler Cloud Functions emülatöründe çalıştırılır.
Cloud Storage
Cloud Storage öğesine yazmak için Firebase Admin SDK'sını (9.7.0 veya daha yeni bir sürüm) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Storage emülatörüne gönderilir. Bu yazma işlemleri başka işlevleri tetiklerse bu işlevler Cloud Functions emülatöründe çalıştırılır.
Firebase Authentication
Firebase Authentication öğesine yazmak için Firebase Admin SDK'sını (9.3.0 veya daha yeni bir sürüm) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Auth emülatörüne gönderilir. Bu yazma işlemleri başka işlevleri tetiklerse bu işlevler Cloud Functions emülatöründe çalıştırılır.
Firebase Hosting
Cloud Functions kullanarak dinamik içerik oluşturuyorsanız
Firebase Hosting, firebase emulators:start
yerel HTTP işlevlerinizi barındırma için proxy olarak kullanır.
Firebase uyarıları
En az bir desteklenen Firebase uyarısı tetikleyicisi içeren tüm projelerde, emülatör kullanıcı arayüzünde FireAlerts sekmesi bulunur. Uyarı tetikleyiciyi taklit etmek için:
- FireAlerts (Yangın Uyarıları) sekmesini açın. Bu sekmede, tetikleyicilerle ilişkili uyarı türleriyle doldurulmuş bir açılır liste gösterilir (örneğin, onNewFatalIssuePublished tetikleyiciniz varsa crashlytics.newFatalIssue gösterilir).
- Bir uyarı türü seçin. Form, düzenlenebilen varsayılan değerlerle otomatik olarak doldurulur. Etkinliğin alanlarını düzenleyebilirsiniz (uyarı etkinliğindeki diğer bilgiler çıkarım yoluyla elde edilir, sahte değerlerdir veya rastgele oluşturulur).
- İşlevler emülatörüne yapay uyarı göndermek için Uyarı Gönder'i seçin. Firebase konsolundaki Uyarılar'da (günlüklerde de) günlüğe kaydetme işlemi yapılabilir.
Günlük Kaydı
Emülatör, işlevlerinizden gelen günlükleri çalıştıkları terminal penceresine aktarır. İşlevlerinizdeki console.log()
, console.info()
, console.error()
ve console.warn()
ifadelerinden gelen tüm çıkışları gösterir.
Sonraki adımlar
Firebase Emulator Suite'in kullanımına dair eksiksiz bir örnek için test etme hızlı başlangıç örneğine bakın.