Catch up on everthing we announced at this year's Firebase Summit. Learn more

Exécuter des fonctions localement

La CLI Firebase inclut un émulateur Cloud Functions qui peut émuler les types de fonctions suivants :

  • Fonctions HTTPS
  • Fonctions appelables
  • Fonctions d'arrière-plan déclenchées à partir de l'authentification, de la base de données en temps réel, de Cloud Firestore et de Cloud Pub/Sub.

Vous pouvez exécuter des fonctions localement pour les tester avant de les déployer en production.

Installer l'interface de ligne de commande Firebase

Pour utiliser l'émulateur Cloud Functions, commencez par installer la CLI Firebase :

npm install -g firebase-tools

Pour utiliser l'émulateur local, vos fonctions Cloud doivent dépendre de :

  • firebase-admin la version 8.0.0 ou supérieure.
  • firebase-functions Version 3.0.0 ou plus.

Configurer les informations d'identification d'administrateur (facultatif)

Si vous voulez que vos tests de fonctions d'interagir avec les API Google ou d' autres API via le Firebase Firebase Administrateur SDK , vous devrez peut - être configurer les informations d' identification d'administration.

  • Cloud FireStore et en temps réel triggers ont déjà des informations d' identification suffisantes, et ne nécessitent pas de configuration supplémentaire.
  • Toutes les autres API, y compris les API Firebase telles que Authentication et FCM ou les API Google telles que Cloud Translation ou Cloud Speech, nécessitent les étapes de configuration décrites dans cette section. Cela vaut si vous utilisez les fonctions shell ou firebase emulators:start .

Pour configurer les informations d'identification d'administrateur pour les fonctions émulées :

  1. Ouvrez le volet des comptes de service de la Google Cloud Console.
  2. Assurez - vous que App Engine compte de service par défaut est sélectionné et utilisez le menu d'options à droite pour sélectionner Créer clé.
  3. Lorsque vous êtes invité, sélectionnez JSON pour le type de clé, puis cliquez sur Créer.
  4. Définissez vos identifiants Google par défaut pour qu'ils pointent vers la clé téléchargée :

    Unix

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase emulators:start
    

    les fenêtres

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

Une fois ces étapes, vos tests de fonctions peuvent accéder Firebase et les API Google à l' aide du SDK d' administration . Par exemple, lors du test d' un déclencheur d' authentification, la fonction émulé pourrait appeler admin.auth().getUserByEmail(email) - admin.auth().getUserByEmail(email) .

Paramétrer la configuration des fonctions (facultatif)

Si vous utilisez des variables de configuration des fonctions personnalisées, exécutez d' abord la commande pour obtenir votre configuration personnalisée (exécuter ce dans le functions répertoire) dans votre environnement local:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Exécuter la suite d'émulateurs

Pour exécuter les fonctions de Cloud émulateur, utilisez les emulators:start la commande suivante :

firebase emulators:start

Le emulators:start commande commencera émulateurs pour les fonctions de Cloud, Nuage Firestore, Base de données en temps réel, et Firebase d' hébergement basée sur les produits que vous avez initialisés dans votre projet local à l' aide d' firebase init . Si vous voulez commencer un émulateur particulier, utilisez le --only drapeau:

firebase emulators:start --only functions

Si vous souhaitez exécuter une suite de test ou d'un script test après les émulateurs ont commencé, utilisez les emulators:exec commande:

firebase emulators:exec "./my-test.sh"

Instrumentez votre application pour parler aux émulateurs

Pour instrumenter votre application afin d'interagir avec les émulateurs, vous devrez peut-être effectuer une configuration supplémentaire.

Instrumentez votre application pour des fonctions appelables

Si vos activités prototypes et tests impliquent des fonctions de back - end appelables , l' interaction configure avec les fonctions Cloud pour émulateur Firebase comme ceci:

Android
        // 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);
Rapide
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);

Instrumenter votre application pour l'émulation de fonctions HTTPS

Chaque fonction HTTPS de votre code sera servie à partir de l'émulateur local en utilisant le format d'URL suivant :

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Par exemple simple helloWorld fonction avec le port hôte par défaut et la région sera servi à:

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

Instrumentez votre application pour l'émulation de fonctions déclenchées en arrière-plan

L'émulateur Cloud Functions prend en charge les fonctions déclenchées en arrière-plan à partir des sources suivantes :

  • Émulateur de base de données en temps réel
  • Émulateur Cloud Firestore
  • Émulateur d'authentification
  • Émulateur Pub/Sub

Pour déclencher des événements en arrière-plan, connectez votre application ou votre code de test aux émulateurs à l'aide du SDK de votre plate-forme.

Interactions avec d'autres services

La suite d'émulateurs comprend plusieurs émulateurs, qui permettent de tester les interactions entre produits.

Cloud Firestore

Si vous disposez de Cloud Functions qui utilisent le SDK Firebase Admin pour écrire dans Cloud Firestore, ces écritures seront envoyées à l'émulateur Cloud Firestore s'il est en cours d'exécution. Si d'autres fonctions Cloud Functions sont déclenchées par ces écritures, elles seront exécutées dans l'émulateur Cloud Functions.

Hébergement Firebase

Si vous utilisez des fonctions Cloud pour générer du firebase emulators:start contenu dynamique pour Firebase Hébergement , firebase emulators:start utilise vos fonctions HTTP locales comme proxy pour l' hébergement.

Enregistrement

L'émulateur diffuse les journaux de vos fonctions vers la fenêtre du terminal où elles s'exécutent. Il affiche toutes les sorties de console.log() , console.info() , console.error() et console.warn() déclarations dans vos fonctions.

Prochaines étapes

Pour un exemple complet d'utiliser la suite de l' émulateur Firebase, voir l' échantillon de test QuickStart .