Prima di iniziare con Firebase Local Emulator Suite, assicurati di aver creato un progetto Firebase, configurato il tuo ambiente di sviluppo e selezionato e installato gli SDK Firebase per la tua piattaforma seguendo gli argomenti Introduzione a Firebase per la tua piattaforma: Apple, Android o Web.
Prototipazione e test
Local Emulator Suite contiene diversi emulatori di prodotti, come descritto in Introduzione a Firebase Local Emulator Suite. Puoi creare prototipi e testare con singoli emulatori e combinazioni di emulatori, a seconda di ciò che ritieni più opportuno, in base ai prodotti Firebase che utilizzi in produzione.
Per questo argomento, per presentare il flusso di lavoro di Local Emulator Suite, supponiamo che tu stia lavorando a un'app che utilizza una combinazione tipica di prodotti: un database Firebase e funzioni Cloud Functions attivate da operazioni su quel database.
Dopo aver inizializzato localmente il progetto Firebase, il ciclo di sviluppo con Local Emulator Suite prevede in genere tre passaggi:
Crea prototipi di funzionalità in modo interattivo con gli emulatori e Emulator Suite UI.
Se utilizzi un emulatore di database o l'emulatore Cloud Functions, esegui un passaggio una tantum per connettere la tua app agli emulatori.
Automatizza i test con gli emulatori e gli script personalizzati.
Inizializza localmente un progetto Firebase
Assicurati di installare l'interfaccia a riga di comando o di eseguire l'aggiornamento all'ultima versione.
curl -sL firebase.tools | bashSe non l'hai ancora fatto, inizializza la directory di lavoro corrente come progetto Firebase, seguendo le istruzioni sullo schermo per specificare che utilizzi Cloud Functions e Cloud Firestore o Realtime Database:
firebase initLa directory del progetto ora conterrà i file di configurazione di Firebase, un file di definizione Firebase Security Rules per il database, una directory functions contenente il codice di Cloud Functions e altri file di supporto.
Prototipazione interattiva
Local Emulator Suite è progettato per consentirti di creare rapidamente prototipi di nuove funzionalità e l'interfaccia utente integrata della suite è uno degli strumenti di prototipazione più utili. È un po' come avere la console Firebase in esecuzione localmente.
Utilizzando Emulator Suite UI, puoi eseguire l'iterazione della progettazione di un database, provare diversi flussi di dati che coinvolgono Cloud Functions, valutare le modifiche alle regole di sicurezza, controllare i log per verificare le prestazioni dei servizi di backend e altro ancora. Poi, se vuoi ricominciare, svuota il database e inizia da capo con una nuova idea di progettazione.
Tutto questo è disponibile quando avvii Local Emulator Suite con:
firebase emulators:startPer creare il prototipo della nostra app ipotetica, configuriamo e testiamo una funzione Cloud Functions di base per modificare le voci di testo in un database, quindi creiamo e compiliamo il database in Emulator Suite UI per attivarlo.
- Crea una funzione Cloud Functions attivata dalle scritture nel database modificando il file
functions/index.jsnella directory del progetto. Sostituisci i contenuti del file esistente con il seguente snippet. Questa funzione rileva le modifiche ai documenti nella raccoltamessages, converte i contenuti del campooriginaldi un documento in lettere maiuscole e archivia il risultato nel campouppercasedel documento. - Avvia Local Emulator Suite con
firebase emulators:start. Gli emulatori Cloud Functions e del database si avviano, configurati automaticamente per interagire. - Visualizza la UI nel browser all'indirizzo
http://localhost:4000. La porta 4000 è quella predefinita per la UI, ma controlla i messaggi del terminale generati dall'interfaccia a riga di comando Firebase. Prendi nota dello stato degli emulatori disponibili. Nel nostro caso, verranno eseguiti gli emulatori Cloud Functions e Cloud Firestore.
- Nella UI, nella scheda Firestore > Dati, fai clic su Avvia raccolta e segui i prompt per creare un nuovo documento in una raccolta
messages, con nome campooriginale valoretest. Questo attiva la nostra funzione Cloud Functions. Osserva che poco dopo viene visualizzato un nuovo campouppercase, compilato con la stringa "TEST".
- Nella scheda Firestore > Richieste, esamina le richieste effettuate al tuo database emulato, incluse tutte le valutazioni Firebase Security Rules eseguite nell'ambito dell'evasione di queste richieste.
- Controlla la scheda Log per verificare che la funzione non abbia riscontrato errori durante l'aggiornamento del database.
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}); });
Puoi eseguire facilmente l'iterazione tra il codice della funzione Cloud Functions e le modifiche interattive al 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.
Connetti l'app agli emulatori
Una volta che hai fatto buoni progressi con la prototipazione interattiva e hai scelto un design, potrai aggiungere il codice di accesso al database alla tua app utilizzando l'SDK appropriato. Continuerai a utilizzare la scheda del database e, per le funzioni, la scheda Log in Emulator Suite UI per verificare che il comportamento della tua app sia corretto.
Ricorda che Local Emulator Suite è uno strumento per sviluppatori locale. Le scritture nei database di produzione non attiveranno le funzioni di cui stai creando il prototipo localmente.
Per passare alla scrittura nel database da parte dell'app, devi indirizzare le classi di test o la configurazione in-app all'emulatore Cloud Firestore.
Kotlin
// 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
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance; // Connects to the Firestore Emulator running on port 8080 db.Settings.Host = "127.0.0.1:8080"; db.Settings.SslEnabled = false;
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); }
Automatizza i test con script personalizzati
Ora passiamo all'ultimo passaggio del workflow complessivo. Una volta creato il prototipo della funzionalità in-app e se sembra promettente su tutte le piattaforme, puoi passare all'implementazione e ai test finali. Per i workflow di test delle unità e di CI, puoi avviare gli emulatori, eseguire test basati su script e arrestare gli 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 funziona il flusso di lavoro di base lato client, puoi continuare con i dettagli sui singoli emulatori della suite, incluso come utilizzarli per lo sviluppo di app lato server:
- Aggiungi l'emulatore Authentication ai tuoi workflow di prototipazione
- Scopri di più sulle funzionalità dell'emulatore Realtime Database
- Scopri di più sulle funzionalità dell'emulatore Cloud Storage for Firebase
- Scopri di più sulle funzionalità dell'emulatore Cloud Firestore
- Collega l'app all'emulatore di Cloud Functions
- Valuta Firebase Extensions riducendo al minimo i costi fatturati con l'emulatore Extensions
Cosa devo fare adesso?
Assicurati di leggere gli argomenti relativi agli emulatori specifici collegati sopra. Quindi:
- Per una raccolta di video selezionati ed esempi dettagliati di istruzioni, segui la playlist di formazione sugli emulatori Firebase.
- Esamina i casi d'uso avanzati che coinvolgono i test delle regole di sicurezza e l'SDK Firebase Test: Testa le regole di sicurezza (Cloud Firestore), Testa le regole di sicurezza (Realtime Database) e Testa le regole di sicurezza (Cloud Storage for Firebase).