Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Collega la tua app e inizia a creare prototipi

Prima di saltare in con Firebase locale emulatore Suite, assicurati di aver creato un progetto Firebase, impostare l'ambiente di sviluppo, e di aver scelto e installato Firebase SDK per la piattaforma in base alla Get iniziato con argomenti Firebase per la piattaforma: iOS , Android o Web .

Prototipo e test

L'emulatore Suite locale contiene diversi emulatori di prodotto, come descritto in Introduzione alla Firebase locale 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.

Interazione tra Firebase dstabase ed emulatori di funzioni
Funzioni cloud di database e emulatori come parte del completo locale emulatore Suite .

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 quel database.

Dopo aver inizializzato localmente il tuo progetto Firebase, il ciclo di sviluppo utilizzando Local Emulator Suite avrà in genere tre passaggi:

  1. Funzionalità di prototipo in modo interattivo con gli emulatori e l'interfaccia utente di Emulator Suite.

  2. Se stai utilizzando un emulatore di database o l'emulatore di Cloud Functions, esegui un unico passaggio per connettere la tua app agli emulatori.

  3. Automatizza i tuoi test con gli emulatori e gli script personalizzati.

Inizializzare localmente un progetto Firebase

Assicurarsi di installare la CLI o aggiornamento alla versione più recente .

curl -sL firebase.tools | bash

Se non l'hai già fatto, inizializzare la directory di lavoro corrente come un progetto Firebase, seguendo le istruzioni su schermo per specificare che si sta utilizzando funzioni cloud e cloud sia Firestore o in tempo reale del database:

firebase init

Directory del progetto ora conterrà i file di configurazione, Firebase un file di definizione Firebase norme di sicurezza del database, un functions nuvola codice funzioni directory che contiene, 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 localmente.

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 registri 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.

  1. Creare una funzione nuvola innescato da scritture di database modificando il functions/index.js file nella directory del progetto. Sostituisci il contenuto del file esistente con il seguente frammento. Questa ascolti funzione per modificare i nodi nel messages di gerarchia, converte il contenuto del nodo original di proprietà in maiuscolo, e memorizza il risultato in quella del nodo uppercase proprietà.
  2.   const functions = require('firebase-functions');
    
      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. Lanciare l'emulatore Suite locale con firebase emulators:start . Si avviano le Cloud Functions e gli emulatori di database, configurati automaticamente per l'interoperabilità.
  4. Visualizzare l'interfaccia utente nel proprio browser a http://localhost:4000 . La porta 4000 è l'impostazione predefinita per l'interfaccia utente, ma controlla i messaggi del terminale emessi dalla CLI Firebase. Prendere nota dello stato degli emulatori disponibili. Nel nostro caso, gli emulatori di Cloud Functions e Realtime Database saranno in esecuzione.
    La mia immagine
  5. Nell'interfaccia utente, nella scheda Database in tempo reale, utilizzare i controlli dell'editor contenuto del database per creare un insieme di nodi con messages nodo che contiene un message1 nodo, a sua volta, contiene un nodo con chiave original set e valore alla test . Questo attiva la nostra funzione cloud. Si osservi che una nuova uppercase proprietà appare brevemente, con il valore TEST .
    La mia immagineLa mia immagine
  6. Controllare la scheda Registri per confermare la funzione non è stata eseguita inot errori come l'aggiornamento del database.

Puoi facilmente scorrere 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 e rieseguire le suite di test.

Collega la tua app agli emulatori

Quando avrai compiuto buoni progressi con la prototipazione interattiva e avrai stabilito un progetto, sarai pronto per aggiungere il codice di accesso al database alla tua app utilizzando l'SDK appropriato. Potrai continuare ad usare la scheda database e, per le funzioni, la scheda Registri in Emulatore Suite interfaccia utente per verificare che il comportamento del vostro app è corretto.

Ricorda che Local Emulator Suite è uno strumento di sviluppo locale. Le scritture nei database di produzione non attiveranno le funzioni che stai prototipando localmente.

Per fare in modo che la tua app esegua scritture nel database, dovrai puntare le tue classi di test o la configurazione in-app all'emulatore del database in tempo reale.

Android
        // 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);
iOS - Swift
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Versione web 9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Versione web 8

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

Automatizza i tuoi test con script personalizzati

Ora per l'ultimo passaggio complessivo del flusso di lavoro. 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 test di unità e CI flussi di lavoro, è possibile avviare emulatori, eseguire i test con script, e arrestare gli emulatori in una singola chiamata con il exec comando:

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

Esplora i singoli emulatori in modo più approfondito

Ora che hai visto come appare il flusso di lavoro di base lato client, puoi continuare con i dettagli sui singoli emulatori nella suite, incluso come usarli per lo sviluppo di app lato server:

E dopo?

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