L'interfaccia a riga di comando di Firebase include un emulatore di Cloud Functions in grado di emulare i seguenti tipi di funzioni:
- Funzioni HTTPS
- Funzioni richiamabili
- Funzioni in background attivate da Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage e Cloud Pub/Sub.
È possibile eseguire le funzioni in locale per testarle prima della distribuzione in produzione.
Installa l'interfaccia a riga di comando di Firebase
Per utilizzare l'emulatore di Cloud Functions, installa prima la CLI di Firebase:
npm install -g firebase-tools
Per poter utilizzare l'emulatore locale, le tue Cloud Functions devono dipendere da:
-
firebase-admin
versione8.0.0
o successiva. -
firebase-functions
versione3.0.0
o successiva.
Configura le credenziali di amministratore (facoltativo)
Se desideri che i tuoi test delle funzioni interagiscano con le API di Google o altre API Firebase tramite Firebase Admin SDK , potresti dover configurare le credenziali di amministratore.
- I trigger di Cloud Firestore e Realtime Database dispongono già di credenziali sufficienti e non richiedono una configurazione aggiuntiva.
- Tutte le altre API, comprese le API Firebase come Authentication e FCM o le API di Google come Cloud Translation o Cloud Speech, richiedono i passaggi di configurazione descritti in questa sezione. Questo vale sia che tu stia utilizzando la shell di Cloud Functions o
firebase emulators:start
.
Per configurare le credenziali di amministratore per le funzioni emulate:
- Apri il riquadro Account di servizio di Google Cloud Console.
- Assicurati che l' account di servizio predefinito di App Engine sia selezionato e utilizza il menu delle opzioni a destra per selezionare Crea chiave .
- Quando richiesto, seleziona JSON per il tipo di chiave e fai clic su Crea .
Imposta le tue credenziali predefinite di Google in modo che puntino alla chiave scaricata:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
finestre
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Dopo aver completato questi passaggi, i tuoi test delle funzioni possono accedere alle API di Firebase e Google utilizzando l' SDK di amministrazione . Ad esempio, durante il test di un trigger di autenticazione, la funzione emulata potrebbe chiamare admin.auth().getUserByEmail(email)
.
Configurare la configurazione delle funzioni (opzionale)
Se stai utilizzando variabili di configurazione delle funzioni personalizzate, esegui prima il comando per ottenere la tua configurazione personalizzata (eseguila nella directory delle functions
) nel tuo ambiente locale:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Esegui la suite di emulatori
Per eseguire l'emulatore di Cloud Functions, utilizza il comando emulators:start
:
firebase emulators:start
Il comando emulators:start
avvierà gli emulatori per Cloud Functions, Cloud Firestore, Realtime Database e Firebase Hosting in base ai prodotti che hai inizializzato nel tuo progetto locale utilizzando firebase init
. Se vuoi avviare un particolare emulatore, usa il flag --only
:
firebase emulators:start --only functions
Se si desidera eseguire una suite di test o uno script di test dopo l'avvio degli emulatori, utilizzare il comando emulators:exec
:
firebase emulators:exec "./my-test.sh"
Strumento la tua app per parlare con gli emulatori
Per consentire alla tua app di interagire con gli emulatori, potrebbe essere necessario eseguire alcune configurazioni aggiuntive.
Strumento la tua app per funzioni richiamabili
Se le tue attività di prototipazione e test coinvolgono funzioni di backend richiamabili , configura l'interazione con l'emulatore Cloud Functions for Firebase in questo modo:
Androide
// 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);
Veloce
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")
Web version 9
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web version 8
firebase.functions().useEmulator("localhost", 5001);
Strumenta la tua app per l'emulazione delle funzioni HTTPS
Ogni funzione HTTPS nel codice verrà servita dall'emulatore locale utilizzando il seguente formato URL:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
Ad esempio, una semplice funzione helloWorld
con la porta host e la regione predefinite verrebbe servita in:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
Strumenti la tua app per l'emulazione di funzioni attivate in background
L'emulatore Cloud Functions supporta le funzioni attivate in background dalle seguenti origini:
- Emulatore di database in tempo reale
- Emulatore Cloud Firestore
- Emulatore di autenticazione
- Emulatore Pub/Sub
Per attivare eventi in background, collega la tua app o testa il codice agli emulatori utilizzando l'SDK per la tua piattaforma.
Interazioni con altri servizi
La suite di emulatori include più emulatori, che consentono di testare le interazioni tra prodotti.
Cloud Firestore
Se disponi di funzioni che utilizzano Firebase Admin SDK per scrivere su Cloud Firestore, queste scritture verranno inviate all'emulatore Cloud Firestore se è in esecuzione. Se ulteriori funzioni vengono attivate da tali scritture, verranno eseguite nell'emulatore di Cloud Functions.
Archiviazione su cloud
Se disponi di funzioni che utilizzano Firebase Admin SDK (versione 9.7.0 o successiva) per scrivere su Cloud Storage, queste scritture verranno inviate all'emulatore Cloud Storage se è in esecuzione. Se ulteriori funzioni vengono attivate da tali scritture, verranno eseguite nell'emulatore di Cloud Functions.
Autenticazione Firebase
Se disponi di funzioni che utilizzano Firebase Admin SDK (versione 9.3.0 o successiva) per scrivere nell'autenticazione Firebase, queste scritture verranno inviate all'emulatore Auth se è in esecuzione. Se ulteriori funzioni vengono attivate da tali scritture, verranno eseguite nell'emulatore di Cloud Functions.
Hosting Firebase
Se utilizzi Cloud Functions per generare contenuto dinamico per Firebase Hosting , firebase emulators:start
utilizza le tue funzioni HTTP locali come proxy per l'hosting.
Registrazione
L'emulatore trasmette i registri dalle tue funzioni alla finestra del terminale in cui vengono eseguiti. Visualizza tutto l'output delle console.log()
, console.info()
, console.error()
e console.warn()
all'interno delle tue funzioni.
Prossimi passi
Per un esempio completo dell'utilizzo della suite di emulatori Firebase, vedere l' esempio di avvio rapido di test .