Collega l'app e inizia a creare prototipi


Prima di iniziare con Firebase Local Emulator Suite, assicurati di aver creato un progetto Firebase, di aver configurato il tuo ambiente di sviluppo e di aver selezionato e installato gli SDK Firebase per la tua piattaforma in base agli argomenti Iniziare a utilizzare 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 realizzare prototipi e test con singoli emulatori e combinazioni di emulatori, in base alle tue esigenze, corrispondenti ai prodotti Firebase che utilizzi in produzione.

Interazione tra il database Firebase e gli emulatori di funzioni
Database ed emulatori Cloud Functions nell'ambito del Local Emulator Suite completo.

Per questo argomento, per introdurre il flusso di lavoro Local Emulator Suite, supponiamo stai lavorando a un'app che utilizza una combinazione tipica di prodotti: un'app Firebase e Cloud Functions attivate da operazioni sul database.

Dopo aver inizializzato localmente il progetto Firebase, il ciclo di sviluppo utilizzando In genere per Local Emulator Suite sono previsti tre passaggi:

  1. Prototipa le funzionalità in modo interattivo con gli emulatori e Emulator Suite UI.

  2. Se utilizzi un emulatore di database o l'emulatore Cloud Functions, esegui un passaggio una tantum per connettere la tua app agli emulatori.

  3. 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 esegui l'aggiornamento all'ultima versione.

curl -sL firebase.tools | bash

Se non l'hai ancora fatto, inizializza la directory di lavoro corrente come progetto Firebase, seguendo le istruzioni sullo schermo per indicare che si sta utilizzando Cloud Functions e Cloud Firestore o Realtime Database:

firebase init

La directory del progetto ora conterrà i file di configurazione Firebase, un File di definizione Firebase Security Rules per il database, una directory functions contenenti il codice di Cloud Functions e altri file di supporto.

Prototipazione interattiva

Local Emulator Suite è progettato per consentirti di realizzare rapidamente prototipi di nuove funzionalità. L'interfaccia utente integrata della suite è uno degli strumenti di prototipazione più utili. È un po' come avere la console Firebase in esecuzione in locale.

Con Emulator Suite UI, puoi eseguire l'iterazione del design di un database, provare diversi flussi di dati che coinvolgono le funzioni cloud, 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 da capo, basta svuotare il database e ripartire da zero con una nuova idea di design.

È tutto disponibile quando avvii Local Emulator Suite con:

firebase emulators:start

Per prototipare la nostra ipotetica app, configuriamo e testiamo una funzione Cloud Functions di base modificare le voci di testo in un database, creando e popolandolo in Emulator Suite UI per attivarlo.

  1. Crea una funzione Cloud Functions attivata dalle scritture del database modificando il valore functions/index.js nella directory del progetto. Sostituisci i contenuti del file esistente con lo snippet seguente. Questa funzione rimane in ascolto delle modifiche ai nodi nella gerarchia messages, converte i contenuti della proprietà original del nodo in in maiuscolo e archivia il risultato nel campo uppercase di quel nodo proprietà.
  2.   const functions = require('firebase-functions/v1');
    
      exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
          .onCreate((snapshot, context) => {
            const original = snapshot.val();
            console.log('Uppercasing', context.params.pushId, original);
            const uppercase = original.toUpperCase();
            return snapshot.ref.parent.child('uppercase').set(uppercase);
          });
      
  3. Avvia Local Emulator Suite con firebase emulators:start. Gli emulatori Cloud Functions e del database vengono avviati e configurati automaticamente per l'interoperabilità.
  4. Visualizza l'UI nel tuo browser all'indirizzo http://localhost:4000. La porta 4000 è quella predefinita per l'interfaccia utente, ma controlla l'output dei messaggi del terminale in base a l'interfaccia a riga di comando di Firebase. Controlla lo stato degli emulatori disponibili. Nel nostro caso, verranno eseguiti gli emulatori Cloud Functions e Realtime Database.
    La mia immagine
  5. Nell'interfaccia utente, nella scheda Database in tempo reale, utilizza i controlli dell'editor dei contenuti del database per creare un insieme di nodi con un nodo messages contenente un nodo message1, che a sua volta contiene un nodo con la chiave impostata su original e il valore impostato su test. Questo attiva la nostra funzione cloud. Osserva che un nuovo uppercase viene visualizzata a breve, con il valore TEST.
    Con la mia immagine La mia immagine
  6. Controlla la scheda Log per verificare che la funzione non abbia generato errori durante l'aggiornamento del database.

Puoi eseguire facilmente l'iterazione tra il codice della funzione Cloud Functions modifiche al database finché non ottieni il flusso di dati che stai cercando, senza toccare il codice di accesso al database in-app, la ricompilazione e la nuova esecuzione delle suite di test.

Collega l'app agli emulatori

Dopo aver fatto ottimi progressi con la prototipazione interattiva e aver scelto un design, sarai pronto ad 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. Scritture ai database di produzione non attiveranno le funzioni che stai prototipando a livello locale.

Per fare in modo che l'app effettui scritture nel database, devi indirizzare le classi di test o la configurazione in-app all'emulatore Realtime Database.

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);
} 

Automatizzare i test con script personalizzati

Passiamo ora all'ultimo passaggio generale del flusso di lavoro. Una volta prototipo l'elemento nell'app e sembrerebbe promettente su tutte le piattaforme, potete passare implementazione e test. Per il test delle unità e i flussi di lavoro CI, puoi avviare emulatori, eseguire test basati su script e chiudere gli emulatori in una singola chiamata il comando exec:

firebase emulators:exec "./testdir/test.sh"

Esplora i singoli emulatori in modo più approfondito

Ora che hai visto il flusso di lavoro di base lato client, puoi continua con i dettagli sui singoli emulatori nella suite, incluso il modo in cui per lo sviluppo di app lato server:

Che cosa succede ora?

Assicurati di leggere gli argomenti relativi a emulatori specifici linkati sopra. Quindi: