Prima di iniziare con Firebase Local Emulator Suite, assicurati di aver creato un progetto Firebase, configurato l'ambiente di sviluppo e selezionato e installato gli SDK Firebase per la tua piattaforma in base agli argomenti Inizia con Firebase per la tua piattaforma: Apple , Android o web .
Prototipo e test
Local Emulator Suite contiene diversi emulatori di prodotto, come descritto in Introduzione a Firebase Local Emulator Suite . Puoi prototipare e testare con singoli emulatori e combinazioni di emulatori, come ritieni opportuno, corrispondenti ai prodotti Firebase che stai utilizzando in produzione.

Per questo argomento, per introdurre il flusso di lavoro di Local Emulator Suite, supponiamo che tu stia lavorando su un'app che utilizza una tipica combinazione di prodotti: un database Firebase e funzioni cloud attivate da operazioni su tale database.
Dopo aver inizializzato localmente il tuo progetto Firebase, il ciclo di sviluppo che utilizza Local Emulator Suite prevede in genere tre passaggi:
Funzionalità di prototipo in modo interattivo con gli emulatori e l'interfaccia utente di Emulator Suite.
Se utilizzi un emulatore di database o l'emulatore di Cloud Functions, esegui un passaggio una tantum per connettere la tua app agli emulatori.
Automatizza i tuoi test con gli emulatori e gli script personalizzati.
Inizializza localmente un progetto Firebase
Assicurati di installare l'interfaccia a riga di comando o di aggiornarla alla versione più recente .
curl -sL firebase.tools | bash
Se non lo hai già fatto, inizializza la directory di lavoro corrente come progetto Firebase, seguendo le istruzioni sullo schermo per specificare che stai utilizzando Cloud Functions e Cloud Firestore o Realtime Database :
firebase init
La directory del tuo progetto ora conterrà i file di configurazione di Firebase, un file di definizione delle regole di sicurezza di Firebase per il database, una directory functions
contenente il codice delle funzioni cloud e altri file di supporto.
Prototipazione interattiva
Local Emulator Suite è progettato per consentirti di prototipare rapidamente nuove funzionalità e l'interfaccia utente integrata della Suite è uno dei suoi strumenti di prototipazione più utili. È un po' come avere la console Firebase in esecuzione in locale.
Utilizzando l'interfaccia utente di Emulator Suite, puoi iterare la progettazione di un database, provare diversi flussi di dati che coinvolgono funzioni cloud, valutare le modifiche alle regole di sicurezza, controllare i log per confermare le prestazioni dei tuoi servizi di back-end e altro ancora. Quindi, se vuoi ricominciare da capo, cancella il tuo database e ricomincia da capo con una nuova idea di design.
È tutto disponibile quando avvii Local Emulator Suite con:
firebase emulators:start
Per prototipare la nostra ipotetica app, impostiamo e testiamo una funzione cloud di base per modificare le voci di testo in un database e creare e popolare quel database nell'interfaccia utente di Emulator Suite per attivarlo.
- Crea una funzione cloud attivata dalle scritture del database modificando il file
functions/index.js
nella directory del tuo progetto. Sostituisci il contenuto del file esistente con il seguente frammento. Questa funzione ascolta le modifiche ai documenti nella raccoltamessages
, converte il contenuto del campooriginal
di un documento in maiuscolo e memorizza il risultato nel campouppercase
di quel documento. - Avvia Local Emulator Suite con
firebase emulators:start
. Le funzioni cloud e gli emulatori di database si avviano, configurati automaticamente per l'interoperabilità. - Visualizza l'interfaccia utente nel browser all'indirizzo
http://localhost:4000
. La porta 4000 è l'impostazione predefinita per l'interfaccia utente, ma controlla i messaggi del terminale emessi dall'interfaccia a riga di comando di Firebase. Nota lo stato degli emulatori disponibili. Nel nostro caso, gli emulatori Cloud Functions e Cloud Firestore saranno in esecuzione.
- Nell'interfaccia utente, nella scheda Firestore > Dati , fai clic su Avvia raccolta e segui le istruzioni per creare un nuovo documento in una raccolta
messages
, con fieldnameoriginal
e valuetest
. Questo attiva la nostra funzione cloud. Si noti che a breve viene visualizzato un nuovo campouppercase
, popolato con la stringa "TEST".
- Nella scheda Firestore > Richieste , esamina le richieste fatte al tuo database emulato, incluse tutte le valutazioni delle regole di sicurezza Firebase eseguite come parte del soddisfacimento di tali richieste.
- Controlla la scheda Registri per confermare che la tua funzione non ha riscontrato errori durante l'aggiornamento del database.
const functions = require('firebase-functions'); 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}); });
Puoi facilmente iterare tra il codice della funzione cloud e le modifiche interattive del database fino a ottenere il flusso di dati che stai cercando, senza toccare il codice di accesso al database in-app, ricompilare ed eseguire nuovamente le suite di test.
Collega la tua app agli emulatori
Dopo aver compiuto buoni progressi con la prototipazione interattiva e aver stabilito un progetto, sarai pronto per aggiungere il codice di accesso al database alla tua app utilizzando l'SDK appropriato. Continuerai a utilizzare la scheda Database e, per le funzioni, la scheda Registri nell'interfaccia utente di Emulator Suite per confermare che il comportamento dell'app è corretto.
Ricorda che Local Emulator Suite è uno strumento di sviluppo locale. Le scritture sui database di produzione non attiveranno le funzioni di cui stai creando un prototipo in locale.
Per passare all'esecuzione di scritture nel database da parte della tua app, devi indirizzare le classi di test o la configurazione in-app all'emulatore di 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);
Rapido
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.isPersistenceEnabled = false settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web modular API
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web namespaced API
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
Automatizza i tuoi test con script personalizzati
Ora per l'ultimo passaggio del flusso di lavoro complessivo. Una volta che hai prototipato la tua funzionalità in-app e sembra promettente su tutte le tue piattaforme, puoi passare all'implementazione e al test finali. Per unit test e flussi di lavoro CI, puoi avviare emulatori, eseguire test con script e arrestare emulatori in una singola chiamata con il comando exec
:
firebase emulators:exec "./testdir/test.sh"
Esplora i singoli emulatori in modo più approfondito
Ora che hai visto come si presenta il flusso di lavoro di base lato client, puoi continuare con i dettagli sui singoli emulatori nella suite, incluso come utilizzarli per lo sviluppo di app lato server:
- Aggiungi l'emulatore di autenticazione ai tuoi flussi di lavoro di prototipazione
- Scopri in dettaglio le funzionalità dell'emulatore di database in tempo reale
- Scopri in dettaglio le funzionalità dell'emulatore di Cloud Storage per Firebase
- Scopri in dettaglio le funzionalità dell'emulatore di Cloud Firestore
- Connetti la tua app all'emulatore di Cloud Functions
- Valuta le estensioni di Firebase riducendo al minimo i costi di fatturazione con l'emulatore di estensioni
E dopo?
Assicurati di leggere gli argomenti relativi a emulatori specifici collegati sopra. Poi:
- Per una serie curata di video ed esempi pratici dettagliati, segui la playlist di formazione sugli emulatori Firebase .
- Esamina i casi d'uso avanzati che coinvolgono il test delle regole di sicurezza e l'SDK di test Firebase: Regole di sicurezza del test (Cloud Firestore) , Regole di sicurezza del test (Database in tempo reale) e Regole di sicurezza del test (Cloud Storage per Firebase) .