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 Premiers pas avec Firebase pour votre plate-forme : Apple, Android ou Web.
Créer des prototypes et tester
Le Local Emulator Suite contient plusieurs émulateurs de produits, comme décrit dans Présentation de Firebase Local Emulator Suite. Vous pouvez créer des prototypes et effectuer des tests avec des émulateurs individuels, ainsi qu'avec des combinaisons d'émulateurs, selon vos besoins et en fonction des produits Firebase que vous utilisez en production.
Pour cette rubrique, afin de présenter le workflow 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 :
Créez des prototypes de fonctionnalités de manière interactive avec les émulateurs et Emulator Suite UI.
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.
Automatisez vos tests avec les émulateurs et des scripts personnalisés.
Initialiser localement un projet Firebase
Assurez-vous d'installer la CLI ou de la mettre à jour vers sa dernière version.
curl -sL firebase.tools | bashSi 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 soit Cloud Firestore soit Realtime Database :
firebase initVotre répertoire de projet contient désormais des fichiers de configuration Firebase, un
Firebase Security Rules fichier de définition pour la base de données, un functions répertoire
contenant le code des fonctions Cloud et d'autres fichiers d'assistance.
Créer des prototypes de manière interactive
Local Emulator Suite est conçue pour vous permettre de créer rapidement des prototypes 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 Emulator Suite UI, 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 backend, et plus encore. Ensuite, si vous souhaitez recommencer, effacez simplement votre base de données et repartez de zéro avec une nouvelle idée de conception.
Tout est disponible lorsque vous démarrez le Local Emulator Suite avec :
firebase emulators:startPour créer un prototype de 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 de la suite d'émulateursEmulator Suite UI pour la déclencher.
- Créez une fonction Cloud déclenchée par des écritures dans la base de données en modifiant le
functions/index.jsfichier dans le répertoire de votre projet. Remplacez le contenu du fichier existant par l'extrait suivant. Cette fonction écoute les modifications apportées aux nœuds de la hiérarchiemessages, convertit le contenu de la propriétéoriginaldu nœud en majuscules et stocke le résultat dans la propriétéuppercasede ce nœud. - Lancez le Local Emulator Suite avec
firebase emulators:start. Les émulateurs Cloud Functions et de base de données démarrent et sont automatiquement configurés pour interagir. - Affichez l'interface utilisateur dans votre navigateur à l'adresse
http://localhost:4000. Le port 4000 est celui par défaut pour l'interface utilisateur, mais vérifiez les messages de terminal générés par la Firebase CLI. Notez l'état des émulateurs disponibles. Dans notre cas, les émulateurs Cloud Functions et Realtime Database seront en cours d'exécution.
- Dans l'interface utilisateur, dans l'onglet Realtime Database, 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
messagescontenant un nœudmessage1, qui contient à son tour un nœud dont la clé est définie suroriginalet la valeur surtest. Cela déclenche notre fonction Cloud. Notez qu'une nouvelleuppercasepropriété s'affiche peu de temps après, avec la valeurTEST.
- Consultez l'onglet Journaux pour vérifier que votre fonction ne s'est pas exécutée avec des erreurs lors de la mise à jour de la base de données.
const functions = require('firebase-functions/v1'); 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); });
Vous pouvez facilement itérer entre le code de votre fonction Cloud et les modifications interactives de la base de données jusqu'à obtenir le flux de données souhaité, sans toucher au code d'accès à la base de données dans l'application, ni recompiler ni réexécuter les suites de tests.
Connecter votre application aux émulateurs
Lorsque vous avez bien progressé dans la création de prototypes interactifs et que vous avez opté pour une conception, vous êtes prêt à ajouter du code d'accès à la base de données à votre application à l'aide du SDK approprié. Vous continuerez à utiliser l'onglet de la base de données et, pour les fonctions, l' onglet Journaux dans Emulator Suite UI pour vérifier que le comportement de votre application est correct.
N'oubliez pas que le 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 dont vous créez des prototypes localement.
Pour que votre application écrive dans la base de données, vous devez pointer vos classes de test ou votre configuration dans l'application vers l'émulateur Realtime Database.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val database = Firebase.database database.useEmulator("10.0.2.2", 9000)
Java
// 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);
Swift
// In almost all cases the ns (namespace) is your project ID. let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")
Unity
// Connects to the RTDB Emulator running on port 9000. // Note: You may need to append your namespace: "?ns=YOUR_PROJECT_ID" FirebaseDatabase database = FirebaseDatabase.GetInstance("http://127.0.0.1:9000");
Web
import { getDatabase, connectDatabaseEmulator } from "firebase/database"; const db = getDatabase(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. connectDatabaseEmulator(db, "127.0.0.1", 9000); }
Web
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("127.0.0.1", 9000); }
Automatiser vos tests avec des scripts personnalisés
Passons maintenant à la dernière étape du workflow global. Une fois que vous avez créé un prototype de votre fonctionnalité dans l'application et qu'elle semble prometteuse sur toutes vos plates-formes, vous pouvez passer à l'implémentation et aux tests finaux. Pour les tests unitaires et les workflows d'intégration continue, vous pouvez démarrer des émulateurs, exécuter des tests scriptés et éteindre des émulateurs en un seul appel avec la commande exec :
firebase emulators:exec "./testdir/test.sh"Explorer les émulateurs individuels plus en détail
Maintenant que vous avez vu à quoi ressemble le workflow de base côté client, vous pouvez en savoir plus sur les émulateurs individuels de la suite, y compris sur la façon de les utiliser pour le développement d'applications côté serveur :
- Ajouter l'émulateur Authentication à vos workflows de prototypage
- En savoir plus sur les fonctionnalités de l'émulateur Realtime Database
- En savoir plus sur les fonctionnalités de l'émulateur Cloud Storage for Firebase
- En savoir plus sur les fonctionnalités de l'émulateur Cloud Firestore
- Connecter votre application à l'émulateur Cloud Functions
- Évaluer Firebase Extensions tout en minimisant les coûts de facturation avec l'émulateur Extensions
Et maintenant ?
Veillez à lire les rubriques liées aux émulateurs spécifiques mentionnés ci-dessus. Puis :
- Pour un ensemble organisé de vidéos et d'exemples pratiques détaillés, suivez la playlist de formation sur les émulateurs Firebase.
- Découvrez des cas d'utilisation avancés impliquant des tests de règles de sécurité et le SDK de test Firebase : Tester les règles de sécurité (Cloud Firestore) , Tester les règles de sécurité (Realtime Database), et Tester les règles de sécurité (Cloud Storage for Firebase).