Avant de connecter votre application à l'émulateur Realtime Database, assurez-vous que vous comprenez le workflow Firebase Local Emulator Suite global, et que vous installez et configurez Local Emulator Suite et examinez ses commandes CLI.
Sélectionner un projet Firebase
Firebase Local Emulator Suite émule des produits pour un seul projet Firebase.
Pour sélectionner le projet à utiliser, avant de démarrer les émulateurs, exécutez la CLI dans la CLI
firebase use
dans votre répertoire de travail. Vous pouvez également transmettre
L'indicateur --project
sur chaque émulateur
.
Local Emulator Suite accepte l'émulation de projets Firebase réels et demo.
Type de projet | Fonctionnalités | Utiliser avec des émulateurs |
---|---|---|
Situation réelle |
Un projet Firebase réel est un projet que vous avez créé et configuré via la console Firebase). Les projets réels disposent de ressources en ligne, comme des instances de base de données, des buckets de stockage, des fonctions ou toute autre ressource que vous configurez pour ce projet Firebase. |
Lorsque vous travaillez sur de vrais projets Firebase, vous pouvez exécuter des émulateurs pour ou tous les produits pris en charge. Pour les produits que vous n'émulez pas, vos applications et votre code interagir avec la ressource active (instance de base de données, espace de stockage un bucket, une fonction, etc.). |
Démo |
Un projet Firebase de démonstration n'a pas de configuration Firebase réelle. aucune ressource active. Ces projets sont généralement accessibles via des ateliers de programmation ou d'autres tutoriels. Les ID des projets de démonstration comportent le préfixe |
Lorsque vous utilisez des projets Firebase de démonstration, vos applications et votre code interagissent avec émulateurs uniquement. Si votre application tente d'interagir avec une ressource pour lequel un émulateur n'est pas en cours d'exécution, le code échouera. |
Nous vous recommandons d'utiliser des projets de démonstration autant que possible. Voici quelques-uns de ses avantages :
- Configuration simplifiée, puisque vous pouvez exécuter les émulateurs sans avoir à créer Projet Firebase
- Sécurité renforcée, car si votre code appelle accidentellement des applications non émulées (production), il n'y a aucun risque de modification des données, d'utilisation ni de facturation.
- Meilleure gestion hors connexion, puisqu'il n'est pas nécessaire d'accéder à Internet téléchargez la configuration de votre SDK.
Instrumenter votre application pour communiquer avec les émulateurs
Android, plates-formes Apple et SDK Web
Configurez votre configuration dans l'application ou vos classes de test pour interagir avec Realtime Database comme suit.
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 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")
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); }
Aucune configuration supplémentaire n'est requise pour tester les fonctions Cloud Functions déclenchées par des événements Realtime Database. à l'aide de l'émulateur. Lorsque les émulateurs Realtime Database et Cloud Functions en cours d'exécution, ils fonctionnent automatiquement ensemble.
Admin SDK s
Les Firebase Admin SDK se connectent automatiquement à l'émulateur Realtime Database lorsque
la variable d'environnement FIREBASE_DATABASE_EMULATOR_HOST
est définie:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
Si votre code s'exécute dans l'émulateur Cloud Functions, l'ID de votre projet
et d'autres configurations seront automatiquement définies lors de l'appel de initializeApp
.
Si vous souhaitez que votre code Admin SDK se connecte à un émulateur partagé s'exécutant dans
dans un autre environnement, vous devez indiquer le même ID de projet que celui défini à l'aide de la CLI Firebase.
Vous pouvez transmettre directement un ID de projet à initializeApp
ou définir la variable d'environnement GCLOUD_PROJECT
.
SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variable d'environnement
export GCLOUD_PROJECT="your-project-id"
Effacer votre base de données entre les tests
Pour vider le Realtime Database entre les activités, vous pouvez effacer la référence de la base de données. Vous pouvez utiliser cette approche au lieu d'arrêter simplement le processus de l'émulateur.
Kotlin+KTX
// With a DatabaseReference, write null to clear the database. database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database. database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
import { getDatabase, ref, set } from "firebase/database"; // With a database Reference, write null to clear the database. const db = getDatabase(); set(ref(db), null);
Web
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
Naturellement, votre code doit attendre la confirmation que le vidage s'est terminé ou échoué à l'aide des fonctionnalités de gestion des événements asynchrones de votre plate-forme.
Après avoir mis en œuvre une étape de ce type, vous pouvez séquencer vos tests et déclencher vos fonctions avec l'assurance que les anciennes données seront définitivement supprimées entre les exécutions et que vous utilisez une nouvelle configuration de test de référence.
Importer et exporter des données
La base de données et les émulateurs Cloud Storage for Firebase vous permettent d'exporter des données depuis une instance d'émulateur en cours d'exécution. Définissez un ensemble de données de référence à utiliser dans votre des tests unitaires ou des workflows d'intégration continue, puis exportez-les pour les partager au sein de l'équipe.
firebase emulators:export ./dir
Lors des tests, au démarrage de l'émulateur, importez les données de référence.
firebase emulators:start --import=./dir
Vous pouvez demander à l'émulateur d'exporter les données à l'arrêt, en spécifiant un
chemin d'exportation ou simplement en utilisant le chemin transmis à --import
.
firebase emulators:start --import=./dir --export-on-exit
Ces options d'importation et d'exportation de données sont compatibles
firebase emulators:exec
. Pour en savoir plus, consultez
documentation de référence sur les commandes de l'émulateur.
Visualiser l'activité des règles de sécurité
Lorsque vous travaillez sur les prototypes et les boucles de test, vous pouvez utiliser des outils de visualisation et les rapports fournis par Local Emulator Suite.
Visualiser les évaluations des règles
Lorsque vous ajoutez des règles de sécurité à votre prototype, vous pouvez les déboguer avec Outils Local Emulator Suite.
Après avoir exécuté une suite de tests, vous pouvez accéder à des rapports de couverture de test qui affichent comment chacune de vos règles a été évaluée. Pour obtenir les rapports, interrogez une sur l'émulateur pendant son exécution. Pour une version adaptée au navigateur, utilisez l'URL suivante:
http://localhost:9000/.inspect/coverage?ns=<database_name>
Cela casse les règles en expressions et sous-expressions que vous pouvez passez la souris pour obtenir plus d'informations, y compris le nombre d'exécutions et les valeurs renvoyé. Pour la version JSON brute de ces données, incluez l'URL suivante dans votre requête:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
Et maintenant ?
- Pour découvrir un ensemble organisé de vidéos et d'exemples détaillés, suivez la playlist de formation sur les émulateurs Firebase.
- Examinez des cas d'utilisation avancés impliquant les tests de règles de sécurité et le SDK Firebase Test: Règles de sécurité pour les tests (Realtime Database).
- Étant donné que les fonctions déclenchées sont une intégration classique à Realtime Database, Pour en savoir plus sur l'émulateur Cloud Functions for Firebase, consultez la page Exécuter des fonctions localement