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

Firebase CLI'de, aşağıdaki işlev türlerine emülasyon yapabilen bir Cloud Functions emülatörü bulunur:

  • 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.

İşlevleri yerel olarak çalıştırarak üretime dağıtmadan önce test edebilirsiniz.

Firebase CLI'ı yükleme

Cloud Functions emülatörünü kullanmak için önce Firebase CLI'ı yükleyin:

npm install -g firebase-tools

Yerel emülatörü kullanmak için Cloud Functions'ınız aşağıdakilere 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 ayarlayın (isteğe bağlı)

İşlevler testlerinizin, Firebase Admin 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.
  • Authentication gibi Firebase API'leri ve FCM veya Cloud Translation ya da Cloud Speech gibi Google API'leri dahil olmak üzere diğer tüm API'ler için bu bölümde açıklanan kurulum adımlarının uygulanması gerekir. Bu durum, ister Cloud Functions kabuğunu ister firebase emulators:start kabuğunu kullanın.

Emüle edilen işlevler için yönetici kimlik bilgilerini ayarlamak üzere:

  1. Google Cloud Console'un Hizmet Hesapları bölmesini açın.
  2. App Engine varsayılan hizmet hesabı seçeneğinin belirlendiğinden emin olun ve Anahtar oluştur'u seçmek için sağdaki seçenekler menüsünü kullanın.
  3. İstendiğinde, anahtar türü olarak JSON'yi seçip Oluştur'u tıklayın.
  4. Varsayılan Google 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'sını kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir kimlik doğrulama tetikleyicisini test ederken emüle edilen işlev, admin.auth().getUserByEmail(email) öğesini ç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 özel yapılandırmanızı yerel ortamınızda almak için komutu çalıştırın (bunu functions dizininden ç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 dayalı olarak 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şladıktan sonra bir test paketi veya test komut dosyası çalıştırmak isterseniz 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ş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

Prototipiniz ve test etkinlikleriniz çağrılanabilir arka uç işlevleri 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);
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ızda HTTPS işlevleri emülasyonu için araç kullanma

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 konumda sunulur:

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

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

Cloud Functions emülatörü, aşağıdaki kaynaklardan gelen arka planda tetiklenen işlevleri destekler:

  • Realtime Database emülatörü
  • Cloud Firestore emülatörü
  • Kimlik doğrulama emülatörü
  • Pub/Sub emülatörü

Arka plan etkinliklerini tetiklemek için Emulator Suite kullanıcı arayüzünü 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 tarafından yayınlanan özel etkinlikler için test işleyicileri

Cloud Functions v2 ile Firebase Extensions özel etkinliklerini işlemek için uyguladığınız işlevlerde Cloud Functions emülatörü, Eventarc tetikleyicilerini desteklemek amacıyla Eventarc emülatörüyle eşlenir.

Etkinlik yayan uzantılarda özel etkinlik işleyicileri test etmek için Cloud Functions ve Eventarc emülatörlerini yüklemeniz gerekir.

Eventarc emülatörü çalışıyorsa Cloud Functions çalışma zamanı, mevcut süreçte EVENTARC_EMULATOR ortam değişkenini localhost:9299 olarak ayarlar. EVENTARC_EMULATOR ortam değişkeni ayarlandığında Firebase Yönetici SDK'ları, Eventarc emülatörüne otomatik olarak bağlanır. Varsayılan bağlantı noktasını Configure Local Emulator Suite 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'sı, 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 kullanıcı arayüzündeki Functions günlüklerini kontrol edebilirsiniz.

Diğer hizmetlerle olan 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'a yazmak için Firebase Admin SDK'yı kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Firestore emülatörüne gönderilir. Bu yazma işlemleri tarafından tetiklenen başka işlevler varsa bunlar Cloud Functions emülatöründe çalıştırılır.

Cloud Storage

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 emülatörüne gönderilir. Bu yazma işlemleri tarafından tetiklenen başka işlevler varsa bunlar Cloud Functions emülatöründe çalıştırılır.

Firebase Authentication

Firebase Authentication'a yazmak için Firebase Admin SDK'yı (sürüm 9.3.0 veya üzeri) kullanan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Auth emülatörüne gönderilir. Bu yazma işlemleri tarafından tetiklenen başka işlevler varsa bunlar 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, yerel HTTP işlevlerinizi barındırma için proxy olarak kullanır.

Günlük Kaydı

Emülatör, işlevlerinizdeki günlükleri çalıştırıldı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.