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

Firebase CLI, şu fonksiyon türlerini görebilirsiniz:

  • HTTPS işlevleri
  • Çağrılabilir işlevler
  • Firebase Authentication, Realtime Database'den tetiklenen arka plan işlevleri, Cloud Firestore, Cloud Storage ve Cloud Pub/Sub.

İş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, Google API'leri veya diğer Firebase ile etkileşime girmesini istiyorsanız Firebase Admin SDK'sı aracılığıyla API'leri ayarlamak için yönetici kimlik bilgileri.

  • 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. Şunu açın: Hizmet Hesapları bölmesi kullanıma sunuyoruz.
  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 Firebase'e ve Admin SDK'sını kullanan Google API'leri Örneğin, bir kimlik doğrulama tetikleyicisi olarak, emüle edilen işlev admin.auth().getUserByEmail(email)

İşlev yapılandırmasını ayarlayın (isteğe bağlı)

Özel işlevler yapılandırma değişkenleri kullanıyorsanız önce komutuna ekleyerek (bunu functions dizininde çalıştırın) yerel ortamınızda:

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, Cloud Functions için emülatörleri başlatır. Ürünlere göre Cloud Firestore, Realtime Database ve Firebase Hosting firebase init kullanarak yerel projenizde başlattınız. Şunu istiyorsanız: belirli bir emülatörü başlatmak için --only işaretini kullanın:

firebase emulators:start --only functions

Emülatörler yüklendikten sonra bir test paketi veya test komut dosyası çalıştırmak 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 girmesini sağlamak için bazı ek yapılandırmalar içeriyor.

Ç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 arka uç kaynaklarını Emulator Suite kullanıcı arayüzünü kullanarak veya uygulamanızı ya da test kodunuzu emülatörlere bağlayarak kullanmanız önerilir.

Uzantılar tarafından yayınlanan özel etkinlikler için test işleyicileri

Firebase Extensions özel etkinliklerini işlemek amacıyla uyguladığınız işlevler için Cloud Functions v2 ile kullandığınızda, Cloud Functions emülatörü Destekleyen Eventarc emülatörü Eventarc tetikleyicileri.

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

Cloud Functions çalışma zamanı, EVENTARC_EMULATOR ortamını ayarlar Eventarc emülatörü, mevcut işlemde localhost:9299 değerini çalışıyor. Firebase Admin SDK'ları Eventarc'a otomatik olarak bağlanır EVENTARC_EMULATOR ortam değişkeni ayarlandığında emülatör olarak ayarlanır. Şunları yapabilirsiniz: varsayılan bağlantı noktasını Configure Local Emulator Suite (Yerel Emulator Paketini Yapılandırma) altında açıklandığı şekilde değiştirin.

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ü, herhangi bir öğeyi tetiklemek için Cloud Functions emülatörüne geri kayıtlı işleyicileri.

Ayrıntılı bilgi için Emulator Suite kullanıcı arayüzündeki Functions günlüklerini kontrol edebilirsiniz. işleyicinin yürütülmesinden kaynaklanır.

Diğer hizmetlerle olan etkileşimler

Emülatör paketi birden fazla emülatör içerir. Bu emülatörler, yönelik testler yapılır.

Cloud Firestore

Firebase Admin SDK'yı kullanan işlevleriniz varsa Cloud Firestore, bu yazmalar Cloud Firestore emülatörüne gönderilir çalışıp çalışmadığını kontrol edin. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.

Cloud Storage

Firebase Admin SDK'yı (9.7.0 veya sonraki sürümler) kullanan işlevleriniz varsa Cloud Storage'a yazmak için bu yazma işlemleri Cloud Storage emülatörüne gönderilir çalışıp çalışmadığını kontrol edin. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.

Firebase Authentication

Firebase Admin SDK'yı (9.3.0 veya sonraki sürümler) kullanan işlevleriniz varsa Firebase Authentication'a yazmak için bu yazma işlemleri Auth emülatörüne gönderilir çalışıp çalışmadığını kontrol edin. Bu yazma işlemleri başka işlevleri tetiklerse Cloud Functions emülatöründe çalıştırılır.

Firebase Hosting

Cloud Functions'ı kullanarak tüm etkinlikler için Firebase Hosting, firebase emulators:start barındırma için proxy olarak yerel HTTP işlevlerinizi kullanır.

Günlük Kaydı

Emülatör, işlevlerinizin günlük akışını gerçekleştirdikleri terminal penceresine run. Bu sonuçta console.log(), console.info() ve İşlevlerinizin içindeki console.error() ve console.warn() ifadeleri.

Sonraki adımlar

Firebase emülatör paketini kullanmaya ilişkin tam bir örnek için test hızlı başlangıç örneği.