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

Firebase CLI, aşağıdaki işlev türlerini taklit edebilen bir Cloud FunctionsemülatörCloud Functions 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.

Üretime dağıtmadan önce test etmek için işlevleri yerel olarak çalıştırabilirsiniz.

Firebase CLI'yı yükleme

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

npm install -g firebase-tools

Yerel emülatörü kullanmak için Cloud Functions şunlara bağlı olmalıdır:

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

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

İşlev testlerinizin Firebase Admin SDK aracılığıyla 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ı gereklidir. Bu, Cloud Functions kabuğunu veya firebase emulators:start'yi kullanıyor olmanıza bakılmaksızın geçerlidir.

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

  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'u seçin.
  3. İstendiğinde anahtar türü olarak JSON'u seçin ve Oluştur'u 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
    

    Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

Bu adımları tamamladıktan sonra işlev testleriniz Admin SDK'yı kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir Authentication tetikleyici test edilirken emüle edilen işlev admin.auth().getUserByEmail(email) işlevini çağırabilir.

İşlev yapılandırmasını ayarlama (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ı almak için komutu çalıştırın (bunu 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

Emulator Suite'i çalıştırma

gibi komutlarla dönüştürücünüzü izleme modunda çalıştırabilirsiniz.tsc -w

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 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ş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"

Uygulamanızı emülatörlerle iletişim kuracak şekilde yapılandırma

Uygulamanızı emülatörlerle etkileşime geçecek şekilde ayarlamak için bazı ek yapılandırmalar yapmanız gerekebilir.

Uygulamanızı çağrılabilir işlevler için araçlandırın

Prototip ve test etkinliklerinizde çağrılabilir arka uç işlevleri kullanılıyorsa Cloud Functions for Firebase emülatörüyle etkileşimi şu şekilde yapılandırın:

Kotlin
// 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().useEmulator(withHost: "localhost", port: 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 yapılandırma

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

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

Uygulamanızı görev sırası işlevleri emülasyonu için araçlandırın

Emülatör, tetikleyici tanımlarına göre otomatik olarak emüle edilmiş görev kuyrukları 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 alınmış 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, emüle edilen davranışın üretim ortamlarını tam olarak yansıtmasını beklememelisiniz. Emülatördeki parametreler, görevlerin gönderilme ve yeniden denenme hızına üst sınırlar getirir.

Uygulamanızı arka planda tetiklenen işlevlerin emülasyonu için araçlandırın

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 arka uç kaynaklarını değiştirin veya uygulamanızı ya da test kodunuzu platformunuz için SDK'yı kullanarak emülatörlere bağlayın.

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

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

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

Eventarc emülatörü çalışıyorsa Cloud Functions çalışma zamanı, geçerli işlemde EVENTARC_EMULATOR ortam değişkenini localhost:9299 olarak ayarlar. Firebase Admin SDK ortam değişkeni ayarlandığında EVENTARC_EMULATOR, Eventarc emülatörüne otomatik olarak bağlanır. Varsayılan bağlantı noktasını YapılandırmaLocal Emulator Suite bölümünde açıklandığı gibi değiştirebilirsiniz.

Ortam değişkenleri düzgün şekilde yapılandırıldığında Firebase Admin SDK, 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 UI bölümündeki iş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.

Cloud Firestore

Firebase Admin SDK'sını kullanarak Cloud Firestore yazan işlevleriniz varsa bu yazma işlemleri, çalışıyorsa Cloud Firestore emülatörüne gönderilir. Bu yazma işlemleri başka işlevleri tetiklerse bu işlevler Cloud Functions emülatöründe çalıştırılır.

Cloud Storage

Cloud Storage öğesine 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şlemleri başka işlevleri tetiklerse bu işlevler Cloud Functions emülatöründe çalıştırılır.

Firebase Authentication

Firebase Authentication öğesine yazmak için Firebase Admin SDK'sını (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şlemleri başka işlevleri tetiklerse bu işlevler Cloud Functions emülatöründe çalıştırılır.

Firebase Hosting

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

Firebase uyarıları

En az bir desteklenen Firebase uyarısı tetikleyicisi içeren tüm projelerde, emülatör kullanıcı arayüzünde FireAlerts sekmesi bulunur. Uyarı tetikleyiciyi taklit etmek için:

  1. FireAlerts (Yangın Uyarıları) sekmesini açın. Bu sekmede, tetikleyicilerle ilişkili uyarı türleriyle doldurulmuş bir açılır liste gösterilir (örneğin, onNewFatalIssuePublished tetikleyiciniz varsa crashlytics.newFatalIssue gösterilir).
  2. 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 çıkarım yoluyla elde edilir, sahte değerlerdir veya rastgele oluşturulur).
  3. İşlevler emülatörüne yapay uyarı göndermek için Uyarı Gönder'i seçin. Firebase konsolundaki Uyarılar'da (günlüklerde de) günlüğe kaydetme işlemi yapılabilir.

Günlük Kaydı

Emülatör, işlevlerinizden gelen günlükleri çalıştıkları terminal penceresine aktarır. İşlevlerinizdeki console.log(), console.info(), console.error() ve console.warn() ifadelerinden gelen tüm çıkışları gösterir.

Sonraki adımlar

Firebase Emulator Suite'in kullanımına dair eksiksiz bir örnek için test etme hızlı başlangıç örneğine bakın.