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

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

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

İş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 şunlara 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 sayıda kimlik bilgisine sahiptir ve ek kurulum gerektirmez.
  • Authentication ve FCM gibi Firebase API'leri 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, Cloud Functions kabuğunu veya firebase emulators:start kabuğunu kullanmanızdan bağımsız olarak geçerlidir.

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

  1. Şunu açın: Hizmet Hesapları bölmesi Google Cloud konsolunda görebilirsiniz.
  2. App Engine varsayılan hizmet hesabının seçili olduğundan emin olun ve şunu kullanın: Anahtar oluştur'u seçmek için sağdaki seçenekler menüsünü tıklayı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, Authentication tetikleyicisi ise 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. Cloud Firestore, Realtime Database ve Firebase Hosting tabanlı firebase init kullanarak yerel projenizde ilk kullanıma hazırladığınız ürünler için. Belirli bir emülatörü başlatmak istiyorsanız --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

Uygulamanızda görev sırası işlevlerinin emülasyonunu kullanın

Emülatör, tetikleyiciye göre otomatik olarak emüle edilmiş görev sıraları oluşturur tanımlar ve Yönetici SDK'sı aşağıdaki durumlarda sıraya konulan istekleri emülatöre yeniden yönlendirir. CLOUD_TASKS_EMULATOR_HOST ortamı üzerinden çalıştığını algılar değişkenine eklenmelidir.

Üretimde kullanılan sevk sisteminin bir tanesi emülatörde uygulanır, bu nedenle emülasyon üretim ortamlarını doğru şekilde yansıtması için esnek bir yöntem sağlar. emülatör, görevlerin dağıtıldığı hızın üst sınırlarını sağlar ve yeniden denendi.

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ü
  • Authentication emülatörü
  • Pub/Sub emülatörü
  • Firebase uyarıları emülatörü

Arka plan etkinliklerini tetiklemek için arka uç kaynaklarını Emulator Suite UI aracılığıyla 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 etkinliği işlemek üzere uyguladığınız işlevler için Cloud Functions v2 ile 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ü, geçerli işlemde localhost:9299 değerini çalışıyor. Firebase Admin SDK cihazları Eventarc'a otomatik olarak bağlanır emülatörü (EVENTARC_EMULATOR) ortam değişkeni ayarlandığında emülatör olarak ayarlanır. Şunları yapabilirsiniz: varsayılan bağlantı noktasını Local Emulator Suite yapılandırması altında açıklandığı şekilde değiştirin.

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

Ayrıntılı bilgi için Emulator Suite UI adresindeki Functions günlüklerini inceleyebilirsiniz. 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 yazma işlemleri 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 ürününe 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 ürününe 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

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

Firebase uyarıları

Desteklenen en az bir Firebase uyarı tetikleyicisi içeren projelerde emülatörün kullanıcı arayüzünde FireAlerts sekmesi bulunur. Bir uyarı tetikleyicisini emüle etmek için:

  1. FireAlerts sekmesini açın. Bu sekmede, ilişkili tetikleyicileri olan uyarı türleri (örneğin, onNewFatalIssuePublished tetikleyicisi ise Crashlytics.newFatalIssue gösterilir).
  2. Uyarı türü seçin. Form, otomatik olarak varsayılan değerlerle doldurulur. düzenlenebilir. Etkinliğin alanlarını düzenleyebilirsiniz (diğer uyarı etkinliğindeki bilgiler çıkarımsal, sahte değerler veya rastgele oluşturulur).
  3. İşlevler emülatörüne sentetik bir uyarı göndermek için Uyarı Gönder'i seçin. Firebase konsolundaki Uyarılar bölümünde günlük kaydı bulunur. (ayrıca günlüklerde de).

Günlük Kaydı

Emülatör, işlevlerinizin günlük akışını gerçekleştirdikleri terminal penceresine gerekir. 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.