Check out what’s new from Firebase at Google I/O 2022. Learn more

Connectez votre application et lancez le prototypage

Base de

Avant de vous lancer dans Firebase Local Emulator Suite, assurez-vous d'avoir créé un projet Firebase, configuré votre environnement de développement et sélectionné et installé les SDK Firebase pour votre plate-forme conformément aux rubriques Démarrer avec Firebase pour votre plate-forme : Apple , Android ou Internet .

Prototypage et essai

La suite d'émulateurs locaux contient plusieurs émulateurs de produits, comme décrit dans Présentation de la suite d'émulateurs locaux Firebase . Vous pouvez prototyper et tester avec des émulateurs individuels ainsi qu'avec des combinaisons d'émulateurs, comme bon vous semble, correspondant aux produits Firebase que vous utilisez en production.

Interaction entre Firebase dstabase et les émulateurs de fonctions
Émulateurs de base de données et de fonctions cloud dans le cadre de la suite complète d'émulateurs locaux .

Pour cette rubrique, pour présenter le flux de travail Local Emulator Suite, supposons que vous travaillez sur une application qui utilise une combinaison typique de produits : une base de données Firebase et des fonctions cloud déclenchées par des opérations sur cette base de données.

Une fois que vous avez initialisé localement votre projet Firebase, le cycle de développement à l'aide de Local Emulator Suite comporte généralement trois étapes :

  1. Fonctionnalités de prototype interactives avec les émulateurs et l'interface utilisateur d'Emulator Suite.

  2. Si vous utilisez un émulateur de base de données ou l'émulateur Cloud Functions, effectuez une étape unique pour connecter votre application aux émulateurs.

  3. Automatisez vos tests avec les émulateurs et les scripts personnalisés.

Initialiser localement un projet Firebase

Assurez-vous d' installer la CLI ou de mettre à jour sa dernière version .

curl -sL firebase.tools | bash

Si vous ne l'avez pas déjà fait, initialisez le répertoire de travail actuel en tant que projet Firebase, en suivant les invites à l'écran pour spécifier que vous utilisez Cloud Functions et Cloud Firestore ou Realtime Database :

firebase init

Votre répertoire de projet contiendra désormais les fichiers de configuration Firebase, un fichier de définition des règles de sécurité Firebase pour la base de données, un répertoire de functions contenant le code des fonctions cloud et d'autres fichiers de support.

Prototyper de manière interactive

Local Emulator Suite est conçu pour vous permettre de prototyper rapidement de nouvelles fonctionnalités, et l'interface utilisateur intégrée de la suite est l'un de ses outils de prototypage les plus utiles. C'est un peu comme si la console Firebase s'exécutait localement.

À l'aide de l'interface utilisateur d'Emulator Suite, vous pouvez itérer la conception d'une base de données, essayer différents flux de données impliquant des fonctions cloud, évaluer les modifications des règles de sécurité, vérifier les journaux pour confirmer les performances de vos services back-end, etc. Ensuite, si vous voulez recommencer, effacez simplement votre base de données et recommencez avec une nouvelle idée de conception.

Tout est disponible lorsque vous démarrez la suite d'émulateurs locaux avec :

firebase emulators:start

Pour prototyper notre application hypothétique, configurons et testons une fonction cloud de base pour modifier les entrées de texte dans une base de données, et créons et remplissons cette base de données dans l'interface utilisateur Emulator Suite pour la déclencher.

  1. Créez une fonction cloud déclenchée par des écritures dans la base de données en modifiant le fichier functions/index.js dans le répertoire de votre projet. Remplacez le contenu du fichier existant par l'extrait de code suivant. Cette fonction écoute les modifications apportées aux nœuds dans la hiérarchie des messages , convertit le contenu de la propriété d' original du nœud en majuscules et stocke le résultat dans la propriété uppercase de ce nœud.
  2.   const functions = require('firebase-functions');
    
      exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
          .onCreate((snapshot, context) => {
            const original = snapshot.val();
            console.log('Uppercasing', context.params.pushId, original);
            const uppercase = original.toUpperCase();
            return snapshot.ref.parent.child('uppercase').set(uppercase);
          });
      
  3. Lancez la suite d'émulateurs locaux avec firebase emulators:start . Les Cloud Functions et les émulateurs de base de données démarrent, automatiquement configurés pour interagir.
  4. Affichez l'interface utilisateur dans votre navigateur à l' http://localhost:4000 . Le port 4000 est la valeur par défaut pour l'interface utilisateur, mais vérifiez les messages du terminal émis par la CLI Firebase. Notez l'état des émulateurs disponibles. Dans notre cas, les émulateurs Cloud Functions et Realtime Database seront en cours d'exécution.
    Mon image
  5. Dans l'interface utilisateur, sous l'onglet Base de données en temps réel , utilisez les commandes de l'éditeur de contenu de la base de données pour créer un ensemble de nœuds avec un nœud messages contenant un nœud message1 , contenant à son tour un nœud avec la clé définie sur original et la valeur définie sur test . Cela déclenche notre fonction cloud. Observez qu'une nouvelle propriété uppercase apparaît sous peu, avec la valeur TEST .
    Mon imageMon image
  6. Vérifiez l'onglet Journaux pour confirmer que votre fonction n'a pas exécuté d'erreurs lors de la mise à jour de la base de données.

Vous pouvez facilement itérer entre votre code de fonction cloud et les modifications de base de données interactives jusqu'à ce que vous obteniez le flux de données que vous recherchez, sans toucher au code d'accès à la base de données dans l'application, recompiler et réexécuter les suites de tests.

Connectez votre application aux émulateurs

Lorsque vous aurez bien progressé dans le prototypage interactif et que vous aurez choisi une conception, vous serez prêt à ajouter le code d'accès à la base de données à votre application à l'aide du SDK approprié. Vous continuerez à utiliser l'onglet Base de données et, pour les fonctions, l'onglet Journaux dans l'interface utilisateur d'Emulator Suite pour confirmer que le comportement de votre application est correct.

N'oubliez pas que Local Emulator Suite est un outil de développement local. Les écritures dans vos bases de données de production ne déclencheront pas les fonctions que vous prototypez localement.

Pour que votre application effectue des écritures dans la base de données, vous devez pointer vos classes de test ou votre configuration dans l'application vers l'émulateur de base de données en temps réel.

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        database.useEmulator("10.0.2.2", 9000);
Rapide
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Web version 9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Web version 8

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

Automatisez vos tests avec des scripts personnalisés

Passons maintenant à la dernière étape globale du flux de travail. Une fois que vous avez prototypé votre fonctionnalité dans l'application et qu'elle semble prometteuse sur toutes vos plateformes, vous pouvez vous tourner vers la mise en œuvre et les tests finaux. Pour les tests unitaires et les workflows CI, vous pouvez démarrer des émulateurs, exécuter des tests scriptés et arrêter des émulateurs en un seul appel avec la commande exec :

firebase emulators:exec "./testdir/test.sh"

Explorez les émulateurs individuels plus en profondeur

Maintenant que vous avez vu à quoi ressemble le flux de travail de base côté client, vous pouvez continuer avec des détails sur les émulateurs individuels de la suite, y compris comment les utiliser pour le développement d'applications côté serveur :

Et ensuite ?

Assurez-vous de lire les rubriques liées aux émulateurs spécifiques liés ci-dessus. Puis: