Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Bulut İşlevleri emülatörü içerir:
- HTTPS işlevleri
- Çağrılabilir işlevler
- Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage ve Cloud Pub/Sub tarafından tetiklenen arka plan işlevleri.
Üretime dağıtmadan önce bunları test etmek için işlevleri yerel olarak çalıştırabilirsiniz.
Firebase CLI'yi kurun
Cloud Functions öykünücüsünü kullanmak için önce Firebase CLI'yi yükleyin:
npm install -g firebase-tools
Yerel öykünücüyü kullanmak için Bulut İşlevleriniz şunlara bağlı olmalıdır:
-
firebase-admin
sürüm8.0.0
veya üstü. -
firebase-functions
sürüm3.0.0
veya üstü.
Yönetici kimlik bilgilerini ayarlayın (isteğe bağlı)
İşlev testlerinizin Firebase Admin SDK aracılığıyla Google API'leri veya diğer Firebase API'leri ile etkileşime girmesini 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 ya da Cloud Translation veya Cloud Speech gibi Google API'leri dahil olmak üzere diğer tüm API'ler, bu bölümde açıklanan kurulum adımlarını gerektirir. Bu, Cloud Functions kabuğunu veya
firebase emulators:start
kullanıyor olsanız da geçerlidir.
Öykünülmüş işlevler için yönetici kimlik bilgilerini ayarlamak üzere:
- Google Cloud Console'un Hizmet Hesapları bölmesini açın.
- App Engine varsayılan hizmet hesabının seçili olduğundan emin olun ve sağdaki seçenekler menüsünü kullanarak Anahtar oluştur öğesini seçin.
- İstendiğinde, anahtar türü olarak JSON'u seçin ve Oluştur'a tıklayın.
Google varsayılan kimlik bilgilerinizi, indirilen anahtarı gösterecek şekilde ayarlayın:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
pencereler
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 Kimlik Doğrulama tetikleyicisini test ederken öykünülmüş işlev admin.auth().getUserByEmail(email)
çağırabilir.
Kurulum işlevleri yapılandırması (isteğe bağlı)
Özel işlevler 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
dizini içinde ç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
Öykünücü paketini çalıştırın
Cloud Functions emülatörünü çalıştırmak için emulators:start
komutunu kullanın:
firebase emulators:start
emulators:start
komutu, yerel projenizde firebase init
kullanarak başlattığınız ürünlere dayalı olarak Cloud Functions, Cloud Firestore, Realtime Database ve Firebase Hosting için emülatörleri başlatır. Belirli bir öykünücüyü başlatmak istiyorsanız --only
bayrağını kullanın:
firebase emulators:start --only functions
Öykünücüler başladıktan sonra bir test paketi veya test betiği çalıştırmak istiyorsanız, emulators:exec
komutunu kullanın:
firebase emulators:exec "./my-test.sh"
Öykünücülerle konuşmak için uygulamanızı kullanın
Uygulamanızı öykünücülerle etkileşime girecek şekilde donatmak için bazı ek yapılandırmalar yapmanız gerekebilir.
Çağrılabilir işlevler için uygulamanızı donatın
Prototip ve test etkinlikleriniz çağrılabilir arka uç işlevleri içeriyorsa Cloud Functions for Firebase emülatörü ile etkileşimi şu şekilde yapılandırı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 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);
Süratli
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Web version 9
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web version 8
firebase.functions().useEmulator("localhost", 5001);
Uygulamanızı HTTPS işlevleri öykünmesi için kullanın
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel öykünücüden sunulur:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
Örneğin, varsayılan ana bilgisayar bağlantı noktası ve bölgesi ile basit bir helloWorld
işlevi şu adreste sunulur:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
Uygulamanızı arka planda tetiklenen işlevler öykünmesi için kullanın
Cloud Functions öykünücüsü, aşağıdaki kaynaklardan arka planda tetiklenen işlevleri destekler:
- Gerçek Zamanlı Veritabanı öykünücüsü
- Cloud Firestore öykünücüsü
- Kimlik doğrulama emülatörü
- Pub/Sub emülatörü
Arka plan olaylarını tetiklemek için, Emulator Suite kullanıcı arabirimini kullanarak veya uygulamanızı veya test kodunuzu platformunuz için SDK'yı kullanarak öykünücülere bağlayarak arka uç kaynaklarını değiştirin.
Uzantılar tarafından yayılan özel olaylar için işleyicileri test edin
Firebase Extensions özel olaylarını Cloud Functions v2 ile işlemek için uyguladığınız işlevler için Cloud Functions öykünücüsü, Eventarc tetikleyicilerini desteklemek için Eventarc öykünücüsü ile eşleşir.
Olayları yayan uzantılar için özel olay işleyicileri test etmek üzere Cloud Functions ve Eventarc öykünücülerini yüklemeniz gerekir.
Cloud Functions çalışma zamanı, Eventarc öykünücüsü çalışıyorsa mevcut işlemde EVENTARC_EMULATOR
ortam değişkenini localhost:9299
olarak ayarlar. EVENTARC_EMULATOR
ortam değişkeni ayarlandığında, Firebase Admin SDK'ları otomatik olarak Eventarc öykünücüsüne bağlanır. Varsayılan bağlantı noktasını Yerel Öykünücü Paketini Yapılandır altında açıklandığı gibi değiştirebilirsiniz.
Ortam değişkenleri düzgün bir şekilde yapılandırıldığında Firebase Admin SDK, olayları otomatik olarak Eventarc öykünücüsüne gönderir. Buna karşılık, Eventarc öykünücüsü, herhangi bir kayıtlı işleyiciyi tetiklemek için Bulut İşlevleri öykünücüsüne geri arama yapar.
İşleyici yürütmeyle ilgili ayrıntılar için Emulator Suite kullanıcı arabirimindeki İşlevler günlüklerini kontrol edebilirsiniz.
Diğer hizmetlerle etkileşimler
Öykünücü paketi, ürünler arası etkileşimlerin test edilmesini sağlayan birden çok öykünücü içerir.
Bulut Firestore
Cloud Firestore'a yazmak için Firebase Admin SDK'yı kullanan işlevleriniz varsa bu yazmalar, çalışıyorsa Cloud Firestore öykünücüsüne gönderilir. Bu yazmalar tarafından başka işlevler tetiklenirse, bunlar Bulut İşlevleri öykünücüsünde çalıştırılacaktır.
Bulut depolama
Cloud Storage'a yazmak için Firebase Admin SDK'yı (sürüm 9.7.0 veya üzeri) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Storage öykünücüsüne gönderilir. Bu yazmalar tarafından başka işlevler tetiklenirse, bunlar Bulut İşlevleri öykünücüsünde çalıştırılacaktır.
Firebase Kimlik Doğrulaması
Firebase Authentication'a yazmak için Firebase Admin SDK'yı (sürüm 9.3.0 veya üstü) kullanan işlevleriniz varsa, bu yazmalar, eğer çalışıyorsa, Auth öykünücüsüne gönderilir. Bu yazmalar tarafından başka işlevler tetiklenirse, bunlar Bulut İşlevleri öykünücüsünde çalıştırılacaktır.
Firebase Barındırma
Firebase Barındırma için dinamik içerik oluşturmak üzere Bulut İşlevlerini kullanıyorsanız, firebase emulators:start
yerel HTTP işlevlerinizi barındırma için proxy'ler olarak kullanır.
Kerestecilik
Öykünücü, günlükleri işlevlerinizden çalıştıkları terminal penceresine aktarır. İşlevlerinizin içindeki console.log()
, console.info()
, console.error()
ve console.warn()
ifadelerinden gelen tüm çıktıları görüntüler.
Sonraki adımlar
Firebase öykünücü paketini kullanmanın tam bir örneği için test hızlı başlangıç örneğine bakın.