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
- Kimlik Doğrulama, Gerçek Zamanlı Veritabanı, Cloud Firestore ve Cloud Pub / Sub'dan tetiklenen arka plan işlevleri.
Üretime dağıtmadan önce bunları test etmek için işlevleri yerel olarak çalıştırabilirsiniz.
Firebase CLI'yi yükleyin
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'ın şunlara bağlı olması gerekir:
-
firebase-admin
sürüm8.0.0
veya üzeri. -
firebase-functions
sürüm3.0.0
veya üzeri.
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şimde bulunmasını istiyorsanız yönetici kimlik bilgilerini ayarlamanız gerekebilir.
- Bulut FireStore ve Gerçek Zamanlı Veri Tabanı tetikleyiciler zaten yeterli kimlik bilgilerine sahip ve ek kuruluma ihtiyaç yoktur.
- Kimlik Doğrulama ve FCM gibi Firebase API'leri veya Cloud Translation veya Cloud Speech gibi Google API'leri dahil diğer tüm API'ler bu bölümde açıklanan kurulum adımlarını gerektirir. Bu, işlev kabuğunu veya
firebase emulators:start
kullanıyor olsanız dafirebase emulators:start
.
Öykünülmüş işlevler için yönetici kimlik bilgilerini ayarlamak için:
- Google Cloud Console'un Hizmet Hesapları bölümünü açın.
- App Engine varsayılan hizmet hesabının seçildiğinden 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 anahtara işaret edecek ş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 Yönetici SDK'sını 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)
.
İşlev yapılandırmasını ayarla (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ı (bunu functions
dizininde çalıştırın) almak için komutu ç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
firebase functions:shell
Öykünücü paketini çalıştırın
Cloud Functions emülatörünü çalıştırmak için emülatörleri kullanın emulators:start
komutu:
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 ö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 komut dosyası çalıştırmak istiyorsanız, öykünücüleri kullanın emulators:exec
komutu:
firebase emulators:exec "./my-test.sh"
Emülatörlerle konuşmak için uygulamanızı kullanın
Uygulamanızı öykünücülerle etkileşime girecek şekilde ayarlamak için bazı ek yapılandırma yapmanız gerekebilir.
Uygulamanızı çağrılabilir işlevler için araç olarak kullanın
Prototipiniz ve test etkinlikleriniz çağrılabilir arka uç işlevlerini içeriyorsa Cloud Functions for Firebase öykünücüsü ile etkileşimi şu şekilde yapılandırın:
Android
// 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);
iOS - Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")
ağ
firebase.functions().useEmulator("localhost", 5001);
Uygulamanızı HTTPS işlevleri emülasyonu için kullanın
Kodunuzdaki her HTTPS işlevi, aşağıdaki URL biçimi kullanılarak yerel emülatörden sunulacaktır:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
Örneğin, varsayılan ana bilgisayar bağlantı noktası ve bölgeye sahip basit bir helloWorld
işlevi şu adreste sunulacaktır:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
Uygulamanızı arka planda tetiklenen işlevler emülasyonu için kullanın
Cloud Functions emülatörü, aşağıdaki kaynaklardan arka planda tetiklenen işlevleri destekler:
- Gerçek Zamanlı Veritabanı emülatörü
- Cloud Firestore emülatörü
- Kimlik doğrulama öykünücüsü
- Pub / Sub emülatörü
Arka plan olaylarını tetiklemek için, uygulamanızı veya test kodunuzu platformunuz için SDK'yı kullanarak öykünücülere bağlayın.
Diğer hizmetlerle etkileşimler
Emülatör paketi, ürünler arası etkileşimlerin test edilmesini sağlayan birden çok emülatör içerir.
Cloud Firestore
Cloud Firestore'a yazmak için Firebase Admin SDK kullanan Cloud Functions varsa, bu yazmalar çalışıyorsa Cloud Firestore emülatörüne gönderilir. Bu yazılar tarafından daha fazla Cloud Functions tetiklenirse, bunlar Cloud Functions emülatöründe çalıştırılır.
Firebase Hosting
firebase emulators:start
Hosting için dinamik içerik oluşturmak üzere Cloud Functions kullanıyorsanız firebase emulators:start
, barındırma için proxy olarak yerel HTTP işlevlerinizi kullanır.
Kerestecilik
Öykünücü, işlevlerinizden günlükleri çalıştıkları terminal penceresine aktarır. console.log()
, console.info()
, console.error()
ve console.warn()
ifadelerinden tüm çıktıları işlevlerinizin içinde görüntüler.
Sonraki adımlar
Firebase emülatör paketini kullanmanın tam bir örneği için test hızlı başlangıç örneğine bakın .