Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Cloud Functions emülatör 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.
İşlevleri yerel olarak çalıştırarak üretime dağıtmadan önce test edebilirsiniz.
Firebase CLI'yi yükleme
Cloud Functions emülatörünü kullanmak için önce Firebase CLI'yi yükleyin:
npm install -g firebase-tools
Yerel emülatörü kullanmak için Cloud Functions şunlara bağlı olmalıdır:
firebase-admin
8.0.0
veya sonraki bir sürüm.firebase-functions
3.0.0
veya sonraki bir sürüm.
Yönetici kimlik bilgilerini ayarlama (isteğe bağlı)
İşlev testlerinizin Firebase Admin SDK üzerinden 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ını uygulamanız gerekir. Bu, Cloud Functions kabuğunu veya
firebase emulators:start
'i kullanıyor olmanız fark etmez.
Yansıtılan 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çili olduğundan emin olun ve Anahtar oluştur'u seçmek için sağdaki seçenekler menüsünü kullanın.
- İstendiğinde anahtar türü için 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 Yönetici SDK'sını kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir Authentication tetikleyicisi test edilirken taklit edilen işlev admin.auth().getUserByEmail(email)
'u çağırabilir.
İşlev yapılandırmasını ayarlama (isteğe bağlı)
Özel işlev yapılandırma değişkenleri kullanıyorsanız yerel ortamınızda özel yapılandırmanızı almak için önce şu komutu çalıştırın (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
Emülatör paketini çalıştırma
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 emülatörlerini 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şladı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 konuşacak şekilde donatma
Uygulamanızın emülatörlerle etkileşimde bulunabilmesini sağlamak için bazı ek yapılandırmalar yapmanız gerekebilir.
Çağrılabilir işlevler için uygulamanızı kullanın
Prototip ve test etkinliklerinizde çağrılabilir arka uç işlevleri varsa Cloud Functions for Firebase emülatörüyle etkileşimi aşağıdaki gibi 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);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1: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 ayarlama
Kodunuzdaki her HTTPS işlevi, yerel emülatörden aşağıdaki URL biçimi kullanılarak 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 konumda sunulur:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Uygulamanızı görev sırası işlevleri emülasyonu için donanımla destekleyin
Emülatör, tetikleyici tanımlarına göre taklit edilen görev sıralarını otomatik olarak 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 eklenen 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, taklit edilen davranışın üretim ortamlarını tam olarak yansıtmasını beklememelisiniz. Emülatör içindeki parametreler, görevlerin dağıtılma ve yeniden denenme hızıyla ilgili üst sınırları sağlar.
Uygulamanızı arka planda tetiklenen işlev emülasyonu için donanımla destekleme
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 veya platformunuzun SDK'sını kullanarak uygulamanızı ya da test kodunuzu emülatörlere bağlayarak arka uç kaynaklarını değiştirin.
Uzantıların yayınladığı özel etkinlikler için işleyicileri test etme
Cloud Functions v2 ile Firebase Extensions özel etkinliğini işlemek için uyguladığınız işlevlerde Cloud Functions emülatörü, Eventarc tetikleyicilerini desteklemek için Eventarc emülatörüyle eşlenir.
Etkinlik yayınlayan uzantılar için özel etkinlik işleyicilerini test etmek istiyorsanız Cloud Functions ve Eventarc emülatörlerini yüklemeniz gerekir.
Cloud Functions çalışma zamanı, Eventarc emülatörünün çalışıyor olması durumunda EVENTARC_EMULATOR
ortam değişkenini geçerli işlemde localhost:9299
olarak ayarlar. EVENTARC_EMULATOR
ortam değişkeni ayarlandığında Firebase Admin SDK'ler otomatik olarak Eventarc emülatörüne bağlanır. Varsayılan bağlantı noktasını Local Emulator Suite'yi yapılandır bölümünde açıklandığı şekilde değiştirebilirsiniz.
Ortam değişkenleri doğru şekilde yapılandırıldığında Firebase Admin SDK, etkinlikleri otomatik olarak Eventarc emülatörüne gönderir. Ardından 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'teki İşlevler 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
Cloud Firestore'e yazmak için Firebase Admin SDK'sını kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Firestore emülatörüne gönderilir. Bu yazma işlemleriyle daha fazla işlev tetiklenirse bu işlevler Cloud Functions emülatöründe çalıştırılır.
Cloud Storage
Cloud Storage'e 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şlemleriyle daha fazla işlev tetiklenirse bu işlevler Cloud Functions emülatöründe çalıştırılır.
Firebase Authentication
Firebase Authentication alanına yazmak için Firebase Admin SDK'yı (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şlemleriyle daha fazla işlev tetiklenirse bu işlevler Cloud Functions emülatöründe çalıştırılır.
Firebase Hosting
Firebase Hosting için dinamik içerik oluşturmak amacıyla Cloud Functions kullanıyorsanız firebase emulators:start
, barındırma için yerel HTTP işlevlerinizi proxy olarak kullanır.
Firebase uyarıları
Desteklenen en az bir Firebase uyarı tetikleyicisi içeren tüm projelerde, emülatör kullanıcı arayüzünde FireAlerts sekmesi bulunur. Bir uyarı tetikleyicisini taklit etmek için:
- FireAlerts sekmesini açın. Bu sekmede, kendileriyle ilişkili tetikleyicilere sahip uyarı türleriyle dolu bir açılır liste görüntülenir (ö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 tahmini değerler, örnek değerler veya rastgele oluşturulur).
- İşlev emülatörüne sentetik uyarı göndermek için Uyarı gönder'i seçin. Günlük kaydı, Firebase konsolundaki Uyarılar bölümünde (ve günlüklerde) kullanılabilir.
Günlük Kaydı
Emülatör, işlevlerinizdeki günlükleri çalıştıkları terminal penceresine aktarır. İşlevlerinizin içindeki console.log()
, console.info()
, console.error()
ve console.warn()
ifadelerinin tüm çıkışını gösterir.
Sonraki adımlar
Firebase emülatör paketini kullanmaya ilişkin tam bir örnek için test hızlı başlangıç örneğine bakın.