Avant de vous lancer avec 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 sujets Premiers pas avec Firebase pour votre plate-forme: Apple, Android ou Web.
Prototyper et tester
Local Emulator Suite contient plusieurs émulateurs de produits, comme décrit dans la section Présentation de Firebase Local Emulator Suite. Vous pouvez créer des prototypes et effectuer des tests avec des émulateurs individuels, ainsi que des combinaisons d'émulateurs, selon vos besoins, en fonction des produits Firebase que vous utilisez en production.
Pour ce sujet, afin de présenter le workflow Local Emulator Suite, supposons que vous travailliez 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é votre projet Firebase en local, le cycle de développement à l'aide de Local Emulator Suite comporte généralement trois étapes:
Testez les fonctionnalités du prototype 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 les scripts personnalisés.
Initialiser un projet Firebase localement
Assurez-vous d'installer la CLI ou de passer à 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 instructions à l'écran pour spécifier que vous utilisez Cloud Functions et Cloud Firestore ou Realtime Database:
firebase init
Le répertoire de votre projet contiendra désormais des fichiers de configuration Firebase, un fichier de définition Firebase Security Rules pour la base de données, un répertoire functions
contenant le code des fonctions cloud et d'autres fichiers associés.
Créer des prototypes de façon interactive
Local Emulator Suite est conçu pour vous permettre de créer rapidement des prototypes de nouvelles fonctionnalités. 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.
Avec 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é, consulter les journaux pour vérifier les performances de vos services backend, et plus encore. Ensuite, si vous souhaitez recommencer, il vous suffit d'effacer votre base de données et de repartir avec une nouvelle idée de conception.
Tout est disponible lorsque vous démarrez Local Emulator Suite avec:
firebase emulators:start
Pour créer un prototype de notre application hypothétique, nous allons configurer et tester une fonction cloud de base pour modifier les entrées de texte dans une base de données, et créer et renseigner cette base de données dans le Emulator Suite UI pour la déclencher.
- Pour créer une fonction Cloud déclenchée par des écritures dans la base de données, modifiez 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 surveille les modifications apportées aux documents de la collectionmessages
, convertit le contenu du champoriginal
d'un document en majuscules et stocke le résultat dans le champuppercase
de ce document. - Lancez 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 le port par défaut de l'UI, mais vérifiez les messages de terminal générés par la CLI Firebase. Notez l'état des émulateurs disponibles. Dans notre cas, les émulateurs Cloud Functions et Cloud Firestore s'exécutent.
- Dans l'UI, dans l'onglet Firestore > Données, cliquez sur Start collection (Commencer une collection) et suivez les instructions pour créer un document dans une collection
messages
, avec le champ de nomoriginal
et la valeurtest
. Cela déclenche notre fonction Cloud. Vous remarquerez qu'un nouveau champuppercase
apparaît rapidement, rempli de la chaîne "TEST".
- Dans l'onglet Firestore > Requêtes, examinez les requêtes envoyées à votre base de données émulée, y compris toutes les évaluations Firebase Security Rules effectuées pour répondre à ces requêtes.
- Consultez l'onglet Journaux pour vérifier que votre fonction n'a pas rencontré d'erreurs lors de la mise à jour de la base de données.
const functions = require('firebase-functions/v1'); exports.makeUppercase = functions.firestore.document('/messages/{documentId}') .onCreate((snap, context) => { const original = snap.data().original; console.log('Uppercasing', context.params.documentId, original); const uppercase = original.toUpperCase(); return snap.ref.set({uppercase}, {merge: true}); });
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 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 test.
Connecter votre application aux émulateurs
Lorsque vous avez bien progressé avec le prototypage interactif et que vous avez choisi 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 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 diriger vos classes de test ou votre configuration dans l'application vers l'émulateur Cloud Firestore.
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 firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
Automatiser vos tests avec des scripts personnalisés
Voici la dernière étape du workflow global. Une fois que vous avez prototypé 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 CI, vous pouvez démarrer des émulateurs, exécuter des tests avec script et arrêter des émulateurs en un seul appel avec la commande exec
:
firebase emulators:exec "./testdir/test.sh"
Explorer plus en détail les émulateurs individuels
Maintenant que vous avez vu à quoi ressemble le workflow côté client de base, vous pouvez continuer à en savoir plus sur les émulateurs individuels de la suite, y compris comment 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 sujets liés aux émulateurs spécifiques indiqués dans les liens ci-dessus. Puis :
- Pour découvrir un ensemble organisé de vidéos et d'exemples détaillés, suivez la playlist de formation sur les émulateurs Firebase.
- Découvrez des cas d'utilisation avancés impliquant le test des 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).