İşlevleri yerel olarak çalıştır

Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Cloud Functions öykünücüsü içerir:

  • HTTPS işlevleri
  • Çağrılabilir işlevler
  • Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage 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'yi yükleyin

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ü kullanabilmek için Bulut İşlevlerinizin şunlara bağlı olması gerekir:

  • firebase-admin sürüm 8.0.0 veya üzeri.
  • firebase-functions sürüm 3.0.0 veya üzeri.

Yönetici kimlik bilgilerini ayarlayın (isteğe bağlı)

İşlev testlerinizin Firebase Yönetici SDK'sı aracılığıyla Google API'leri veya diğer Firebase API'leriyle etkileşimde bulunması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 .
  • Kimlik Doğrulama ve FCM gibi Firebase API'leri veya Cloud Translation veya Cloud Speech gibi Google API'leri de 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 .

Benzetilmiş işlevlere yönelik yönetici kimlik bilgilerini ayarlamak için:

  1. Google Cloud konsolunun Hizmet Hesapları bölmesini açın.
  2. 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 öğesini seçin.
  3. İstendiğinde anahtar türü olarak JSON'u seçin ve Oluştur'a tıklayın.
  4. 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
    

    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) çağırabilir.

İşlev yapılandırmasını ayarlayın (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ı (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

Emülatör paketini çalıştırın

Cloud Functions öykünücüsü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

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"

Emülatörlerle konuşmak için uygulamanızı kullanın

Uygulamanızın emülatörlerle etkileşime geçmesini 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 faaliyetleriniz çağrılabilir arka uç işlevlerini içeriyorsa Cloud Functions for Firebase emülatörüyle 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().useFunctionsEmulator(origin: "http://127.0.0.1:5001")

Web modular API

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "127.0.0.1", 5001);

Web namespaced API

firebase.functions().useEmulator("127.0.0.1", 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 öykünücüden sunulacaktır:

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 sunulacaktır:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Arka planda tetiklenen işlevler emülasyonu için uygulamanızı kullanın

Cloud Functions öykünücüsü, 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 emülatörü
  • Pub/Sub emülatörü

Arka plan olaylarını tetiklemek için Emulator Suite kullanıcı arayüzünü kullanarak veya uygulamanızı veya test kodunuzu platformunuza yönelik SDK'yı kullanarak emülatörlere bağlayarak arka uç kaynaklarını değiştirin.

Uzantılar tarafından yayılan özel olaylara yönelik test işleyicileri

Firebase Extensions özel olaylarını Cloud Functions v2 ile işlemek üzere uyguladığınız işlevler için Cloud Functions öykünücüsü, Eventarc tetikleyicilerini desteklemek üzere Eventarc öykünücüsüyle eşleşir.

Olayları yayan uzantılar açısından özel olay işleyicilerini test etmek için 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. Firebase Yönetici SDK'ları, EVENTARC_EMULATOR ortam değişkeni ayarlandığında otomatik olarak Eventarc öykünücüsüne bağlanır. Varsayılan bağlantı noktasını Yerel Emulator Suite'i Yapılandır bölümünde tartışıldığı gibi değiştirebilirsiniz.

Ortam değişkenleri doğru ş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 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 kullanıcı arayüzündeki İş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.

Bulut Firestore

Cloud Firestore'a yazmak için Firebase Admin SDK'yı kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Firestore öykünücüsüne gönderilecektir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse bunlar Cloud Functions öykünücüsünde çalıştırılır.

Bulut depolama

Cloud Storage'a yazmak için Firebase Admin SDK'yı (sürüm 9.7.0 veya üstü) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Storage öykünücüsüne gönderilir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse bunlar Cloud Functions öykünücüsünde çalıştırılı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 yazma işlemleri, çalışıyorsa Auth öykünücüsüne gönderilecektir. Bu yazma işlemleri tarafından başka işlevler tetiklenirse bunlar Cloud Functions öykünücüsünde çalıştırılır.

Firebase Barındırma

Firebase Hosting için dinamik içerik oluşturmak amacıyla Cloud Functions kullanıyorsanız firebase emulators:start yerel HTTP işlevlerinizi barındırma için proxy olarak kullanır.

Kerestecilik

Emülatör, 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 emülatör paketinin kullanımına ilişkin tam bir örnek için test hızlı başlangıç ​​örneğine bakın.