Interfejs wiersza poleceń Firebase zawiera emulator Cloud Functions, który może emulować interfejs następujące typy funkcji:
- Funkcje HTTPS
- Funkcje wywoływane
- funkcji działających w tle pochodzących z Uwierzytelniania Firebase, Bazy danych czasu rzeczywistego Cloud Firestore, Cloud Storage i Cloud Pub/Sub.
Możesz uruchomić funkcje lokalnie, aby je przetestować przed wdrożeniem w środowisku produkcyjnym.
Instalowanie interfejsu wiersza poleceń Firebase
Aby używać emulatora Cloud Functions, najpierw zainstaluj interfejs wiersza poleceń Firebase:
npm install -g firebase-tools
Aby można było używać lokalnego emulatora, funkcje w Cloud Functions muszą zależeć od tych czynników:
firebase-admin
w wersji8.0.0
lub nowszej.firebase-functions
w wersji3.0.0
lub nowszej.
Skonfiguruj dane logowania administratora (opcjonalnie)
Jeśli chcesz, aby testy funkcji działały z interfejsami API Google lub innymi Firebase interfejsów API poprzez pakiet SDK Firebase Admin. dane logowania administratora.
- Aktywatory Cloud Firestore i Bazy danych czasu rzeczywistego mają już wystarczające dane logowania i nie wymagają dodatkowej konfiguracji.
- Wszystkie pozostałe interfejsy API, w tym interfejsy Firebase API, np. Authentication i FCM oraz interfejsy API Google, takie jak Cloud Translation czy Cloud Speech, wymagają wykonania kroków konfiguracji opisanych w tej sekcji. Ma to zastosowanie niezależnie od tego, czy używasz powłoki Cloud Functions, czy
firebase emulators:start
.
Aby skonfigurować dane logowania administratora na potrzeby emulowanych funkcji:
- Otwórz aplikację Panel Konta usługi w konsoli Google Cloud.
- Wybierz Domyślne konto usługi App Engine i użyj w menu opcji po prawej stronie i wybierz Utwórz klucz.
- Gdy pojawi się prośba, wybierz typ klucza JSON i kliknij Utwórz.
Ustaw swoje domyślne dane logowania Google, by wskazywały pobrany klucz:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Gdy wykonasz te czynności, testy funkcjonalne będą miały dostęp do Firebase,
interfejsów API Google przy użyciu pakietu Admin SDK, Na przykład podczas testowania
aktywatora uwierzytelniania, emulowana funkcja może wywołać metodę
admin.auth().getUserByEmail(email)
Skonfiguruj funkcje (opcjonalnie)
Jeśli używasz zmiennych konfiguracji funkcji niestandardowych, najpierw uruchom
polecenie pobrania konfiguracji niestandardowej (uruchom je w katalogu functions
)
w Twoim lokalnym środowisku:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Uruchamianie pakietu emulatorów
Aby uruchomić emulator Cloud Functions, użyj polecenia emulators:start
:
firebase emulators:start
Polecenie emulators:start
uruchomi emulatory Cloud Functions,
Cloud Firestore, Baza danych czasu rzeczywistego i Hosting Firebase oparte na usługach
zainicjowano w projekcie lokalnym przy użyciu firebase init
. Jeśli chcesz
aby uruchomić konkretny emulator, użyj flagi --only
:
firebase emulators:start --only functions
Jeśli chcesz uruchomić pakiet testowy lub skrypt testowy po tym, jak emulatory
rozpoczęte, użyj polecenia emulators:exec
:
firebase emulators:exec "./my-test.sh"
Dostosuj aplikację do emulatorów
Aby dostosować aplikację do interakcji z emulatorami, konieczne może być wykonanie kilku dodatkowych ustawień.
Dostosuj aplikację pod kątem funkcji wywoływanych
Jeśli Twój prototyp i działania testowe obejmują wywoływane funkcje backendu, skonfiguruj interakcję z emulatorem Cloud Functions dla Firebase w ten sposób:
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);
Dostosuj aplikację do emulacji funkcji HTTPS
Każda funkcja HTTPS w kodzie będzie obsługiwana przez lokalny emulator przy użyciu adresu URL w tym formacie:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
Na przykład prosta funkcja helloWorld
z domyślnym portem i regionem hosta jest obsługiwana w tym miejscu:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Dostosuj aplikację do emulacji funkcji wyzwalanych w tle
Emulator Cloud Functions obsługuje funkcje aktywowane w tle z tych źródeł:
- Emulator Bazy danych czasu rzeczywistego
- Emulator Cloud Firestore
- Emulator uwierzytelniania
- Emulator Pub/Sub
Aby aktywować zdarzenia w tle, zmodyfikuj zasoby backendu za pomocą Interfejs pakietu emulatorów albo połączenie aplikacji lub kodu testowego z emulatorami. używanie pakietu SDK na Twojej platformie.
Testowe moduły obsługi zdarzeń niestandardowych generowane przez rozszerzenia
Dla funkcji zaimplementowanych do obsługi zdarzeń niestandardowych Rozszerzeń w Firebase z Cloud Functions w wersji 2, emulator Cloud Functions łączy się z interfejsem Obsługa emulatora Eventarc Aktywatory Eventarc.
Aby przetestować niestandardowe moduły obsługi zdarzeń w przypadku rozszerzeń, które emitują zdarzenia, musisz zainstalować emulatory Cloud Functions i Eventarc.
Środowisko wykonawcze Cloud Functions ustawia środowisko EVENTARC_EMULATOR
na localhost:9299
w bieżącym procesie, jeśli emulator Eventarc
jest uruchomiony. Pakiety Firebase Admin SDK automatycznie łączą się z Eventarc
w emulatorze, gdy ustawiona jest zmienna środowiskowa EVENTARC_EMULATOR
. Dostępne opcje
zmienić domyślny port w sposób omówiony w artykule Konfiguracja pakietu emulatorów lokalnych.
Po prawidłowym skonfigurowaniu zmiennych środowiskowych pakiet Firebase Admin SDK automatycznie wysyła zdarzenia do emulatora Eventarc. Z kolei Eventarc wywołuje ponownie emulator Cloud Functions, zarejestrowanych modułów obsługi.
Szczegółowe informacje znajdziesz w logach funkcji w interfejsie użytkownika pakietu emulatorów. i wykonania modułu obsługi.
Interakcje z innymi usługami
Pakiet emulatorów zawiera wiele emulatorów, które umożliwiają testowania interakcji z różnymi usługami.
Cloud Firestore
Jeśli masz funkcje, które korzystają z pakietu SDK Firebase Admin do zapisu Cloud Firestore, te zapisy zostaną wysłane do emulatora Cloud Firestore , jeśli jest uruchomiony. Jeśli przez te zapisy zostaną aktywowane kolejne funkcje, będą uruchamiane w emulatorze Cloud Functions.
Cloud Storage
Jeśli masz funkcje korzystające z pakietu Firebase Admin SDK (w wersji 9.7.0 lub nowszej) w celu zapisu w Cloud Storage, te zapisy zostaną wysłane do emulatora Cloud Storage , jeśli jest uruchomiony. Jeśli przez te zapisy zostaną aktywowane kolejne funkcje, będą uruchamiane w emulatorze Cloud Functions.
Uwierzytelnianie Firebase
Jeśli masz funkcje korzystające z pakietu Firebase Admin SDK (w wersji 9.3.0 lub nowszej) przed zapisem w Uwierzytelnianiu Firebase, te zapisy zostaną wysłane do emulatora uwierzytelniania , jeśli jest uruchomiony. Jeśli przez te zapisy zostaną aktywowane kolejne funkcje, będą uruchamiane w emulatorze Cloud Functions.
Hosting Firebase
Jeśli używasz Cloud Functions do generowania zawartości dynamicznej dla:
Hosting Firebase, firebase emulators:start
korzysta z lokalnych funkcji HTTP jako serwerów proxy na potrzeby hostingu.
Logowanie
Emulator przesyła strumieniowo logi z funkcji do okna terminala,
run. Wyświetla wszystkie dane wyjściowe z console.log()
, console.info()
,
instrukcji console.error()
i console.warn()
w funkcjach.
Następne kroki
Pełny przykład użycia pakietu emulatorów Firebase znajdziesz w krótkiego wprowadzenia do testowania.