Prima di iniziare a utilizzare 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 seguendo gli argomenti Inizia a utilizzare Firebase per la tua piattaforma: Apple, Android o web.
Prototipo e test
Il Local Emulator Suite contiene diversi emulatori di prodotti, come descritto in Introduzione a Firebase Local Emulator Suite. Puoi creare prototipi ed eseguire test con singoli emulatori e combinazioni di emulatori, a seconda delle tue esigenze, in base ai prodotti Firebase che utilizzi in produzione.
Per questo argomento, per presentare il flusso di lavoro 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 che utilizza Local Emulator Suite in genere prevede 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 l'app agli emulatori.
Automatizza i test con gli emulatori e gli script personalizzati.
Inizializza localmente un progetto Firebase
Assicurati di installare la CLI o 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 ed Cloud Firestore o Realtime Database:
firebase initLa directory del progetto ora conterrà i file di configurazione di Firebase, un
Firebase Security Rules file di definizione per il database, una functions directory
contenente il codice di Cloud Functions e altri file di supporto.
Crea prototipi in modo interattivo
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 Firebase console in esecuzione in locale.
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 il rendimento dei servizi di backend e altro ancora. Poi, se vuoi ricominciare, svuota il database e riparti da zero con una nuova idea di progettazione.
Tutto è disponibile quando avvii Local Emulator Suite con:
firebase emulators:startPer creare un prototipo della nostra app ipotetica, configuriamo e testiamo una funzione Cloud Functions di base per modificare le voci di testo in un database e creiamo e popoliamo il database nell'interfaccia utente di Emulator Suite UI per attivarla.
- Crea una funzione Cloud Functions attivata dalle scritture di database modificando il
functions/index.jsfile nella directory del progetto. Sostituisci i contenuti del file esistente con il seguente snippet. Questa funzione è in attesa di modifiche ai documenti nella raccoltamessages, converte in maiuscolo i contenuti del campooriginaldi un documento e memorizza il risultato nel campouppercasedel documento. - Avvia il Local Emulator Suite con
firebase emulators:start. Gli emulatori Cloud Functions e di database vengono avviati e configurati automaticamente per interagire tra loro. - Visualizza l'interfaccia utente nel browser all'indirizzo
http://localhost:4000. La porta 4000 è quella predefinita per l'interfaccia utente, ma controlla l'output dei messaggi del terminale della Firebase CLI. Prendi nota dello stato degli emulatori disponibili. In questo caso, gli emulatori Cloud Functions e Cloud Firestore saranno in esecuzione.
- Nell'interfaccia utente, nella scheda Firestore > Dati, fai clic
Avvia raccolta e segui le istruzioni per creare un nuovo documento in una
messagesraccolta, con il nome del campooriginale il valoretest. In questo modo viene attivata la funzione Cloud Functions. Nota che dopo poco viene visualizzato un nuovouppercasecampo con la stringa "TEST".
- Nella scheda Firestore > Richieste, esamina le richieste effettuate al database emulato, incluse tutte le Firebase Security Rules valutazioni eseguite nell'ambito dell'elaborazione di queste richieste.
- Controlla la scheda Log per verificare che la funzione non abbia generato 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 del database finché non ottieni il flusso di dati che stai cercando, senza toccare il codice di accesso al database in-app, ricompilare ed eseguire di nuovo le suite di test.
Connetti l'app agli emulatori
Quando hai fatto progressi significativi con la prototipazione interattiva e hai scelto un design, puoi 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 dell'app sia corretto.
Ricorda che Local Emulator Suite è uno strumento di sviluppo locale. Le scritture nei database di produzione non attiveranno le funzioni di cui stai creando il prototipo in locale.
Per fare in modo che l'app esegua scritture nel database, devi indirizzare le classi di test o la configurazione in-app all'Cloud Firestore emulatore.
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
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 flusso di lavoro generale. Dopo aver creato il prototipo della funzionalità in-app e aver verificato che sia promettente su tutte le piattaforme, puoi passare all'implementazione e ai test finali. Per i flussi di lavoro di test delle unità e CI, puoi avviare gli emulatori, eseguire test con script e arrestare gli emulatori in una singola chiamata con il comando exec:
firebase emulators:exec "./testdir/test.sh"Esplora gli emulatori individuali in modo più approfondito
Ora che hai visto l'aspetto del 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 flussi di lavoro di prototipazione
- Scopri in modo approfondito le funzionalità dell'emulatore Realtime Database
- Scopri in modo approfondito le funzionalità dell'emulatore Cloud Storage for Firebase
- Scopri in modo approfondito le funzionalità dell'emulatore Cloud Firestore
- Connetti l'app all'emulatore Cloud Functions
- Valuta Firebase Extensions riducendo al minimo i costi di fatturazione con l'Extensions emulatore
Cosa devo fare adesso?
Assicurati di leggere gli argomenti relativi a emulatori specifici collegati sopra. Quindi:
- Per una serie di video e esempi pratici dettagliati, consulta la playlist di formazione su Firebase Emulators.
- Esamina i casi d'uso avanzati che coinvolgono i test delle regole di sicurezza e l' SDK di test di Firebase: Testare le regole di sicurezza (Cloud Firestore) , Testare le regole di sicurezza (Realtime Database) e Testare le regole di sicurezza (Cloud Storage for Firebase).