Confira tudo que foi anunciado no Firebase Summit e veja como usar o Firebase para acelerar o desenvolvimento de apps e executar os aplicativos com confiança. Saiba mais

Conecte seu aplicativo e comece a prototipar

Banco de

Antes de entrar no Firebase Local Emulator Suite, verifique se você criou um projeto do Firebase, configurou seu ambiente de desenvolvimento e selecionou e instalou SDKs do Firebase para sua plataforma de acordo com os tópicos Introdução ao Firebase para sua plataforma: Apple , Android ou web .

Protótipo e teste

O Local Emulator Suite contém vários emuladores de produtos, conforme descrito em Introdução ao Firebase Local Emulator Suite . Você pode prototipar e testar com emuladores individuais, bem como combinações de emuladores, conforme desejar, correspondendo a quais produtos Firebase você está usando na produção.

Interação entre banco de dados Firebase e emuladores de funções
Emuladores de funções de banco de dados e nuvem como parte do conjunto completo de emuladores locais .

Para este tópico, para apresentar o fluxo de trabalho do Local Emulator Suite, vamos supor que você esteja trabalhando em um aplicativo que usa uma combinação típica de produtos: um banco de dados Firebase e funções de nuvem acionadas por operações nesse banco de dados.

Depois de inicializar localmente seu projeto do Firebase, o ciclo de desenvolvimento usando o Local Emulator Suite normalmente terá três etapas:

  1. O protótipo apresenta de forma interativa com os emuladores e a IU do Emulator Suite.

  2. Se você estiver usando um emulador de banco de dados ou o emulador do Cloud Functions, execute uma etapa única para conectar seu aplicativo aos emuladores.

  3. Automatize seus testes com os emuladores e scripts customizados.

Inicializar localmente um projeto do Firebase

Certifique-se de instalar a CLI ou atualizá-la para sua versão mais recente .

curl -sL firebase.tools | bash

Caso ainda não tenha feito isso, inicialize o diretório de trabalho atual como um projeto do Firebase, seguindo as instruções na tela para especificar que você está usando Cloud Functions e Cloud Firestore ou Realtime Database :

firebase init

O diretório do seu projeto agora conterá arquivos de configuração do Firebase, um arquivo de definição de regras de segurança do Firebase para o banco de dados, um diretório de functions contendo código de funções de nuvem e outros arquivos de suporte.

Protótipo de forma interativa

O Local Emulator Suite foi projetado para permitir que você crie rapidamente protótipos de novos recursos, e a interface de usuário integrada do Suite é uma de suas ferramentas de prototipagem mais úteis. É um pouco como ter o console do Firebase rodando localmente.

Usando o Emulator Suite UI, você pode iterar o design de um banco de dados, experimentar diferentes fluxos de dados envolvendo funções de nuvem, avaliar alterações nas regras de segurança, verificar logs para confirmar o desempenho de seus serviços de back-end e muito mais. Então, se você quiser começar de novo, basta limpar seu banco de dados e começar do zero com uma nova ideia de design.

Está tudo disponível quando você inicia o Local Emulator Suite com:

firebase emulators:start

Para prototipar nosso aplicativo hipotético, vamos configurar e testar uma função de nuvem básica para modificar entradas de texto em um banco de dados e criar e preencher esse banco de dados na IU do Emulator Suite para acioná-lo.

  1. Crie uma função de nuvem acionada por gravações de banco de dados editando o arquivo functions/index.js em seu diretório de projeto. Substitua o conteúdo do arquivo existente pelo trecho a seguir. Essa função monitora alterações em documentos na coleção de messages , converte o conteúdo do campo original de um documento em letras maiúsculas e armazena o resultado no campo de uppercase desse documento.
  2.   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});
          });
      
  3. Inicie o Local Emulator Suite com firebase emulators:start . O Cloud Functions e os emuladores de banco de dados são inicializados, configurados automaticamente para interoperar.
  4. Visualize a interface do usuário em seu navegador em http://localhost:4000 . A porta 4000 é o padrão para a IU, mas verifique as mensagens do terminal enviadas pela Firebase CLI. Observe o status dos emuladores disponíveis. No nosso caso, os emuladores Cloud Functions e Cloud Firestore estarão em execução.
    Minha imagem
  5. Na interface do usuário, na guia Firestore > Dados , clique em Iniciar coleção e siga as instruções para criar um novo documento em uma coleção de messages , com fieldname original e value test . Isso aciona nossa função de nuvem. Observe que um novo campo uppercase aparece em breve, preenchido com a string "TEST".
    Minha imagemMinha imagem
  6. Na guia Firestore > Solicitações , examine as solicitações feitas ao seu banco de dados emulado, incluindo todas as avaliações das regras de segurança do Firebase realizadas como parte do atendimento dessas solicitações.
  7. Verifique a guia Logs para confirmar que sua função não apresentou erros ao atualizar o banco de dados.

Você pode iterar facilmente entre o código de função da nuvem e as edições interativas do banco de dados até obter o fluxo de dados que está procurando, sem tocar no código de acesso ao banco de dados no aplicativo, recompilar e executar novamente os conjuntos de testes.

Conecte seu aplicativo aos emuladores

Depois de fazer um bom progresso com a prototipagem interativa e definir um design, você estará pronto para adicionar o código de acesso ao banco de dados ao seu aplicativo usando o SDK apropriado. Você continuará usando a guia banco de dados e, para funções, a guia Logs na IU do pacote do emulador para confirmar se o comportamento do seu aplicativo está correto.

Lembre-se que o Local Emulator Suite é uma ferramenta de desenvolvimento local. As gravações em seus bancos de dados de produção não acionarão as funções que você está prototipando localmente.

Para mudar para que seu aplicativo faça gravações no banco de dados, você precisará apontar suas classes de teste ou configuração no aplicativo para o emulador 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);
Rápido
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web version 9

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

Web version 8

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

Automatize seus testes com scripts personalizados

Agora, para a última etapa geral do fluxo de trabalho. Depois de criar o protótipo de seu recurso no aplicativo e ele parecer promissor em todas as suas plataformas, você pode passar para a implementação e o teste finais. Para testes de unidade e fluxos de trabalho de CI, você pode iniciar emuladores, executar testes com script e desligar emuladores em uma única chamada com o comando exec :

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

Explore emuladores individuais com mais profundidade

Agora que você viu como é o fluxo de trabalho básico do lado do cliente, pode continuar com detalhes sobre os emuladores individuais na Suite, incluindo como usá-los para o desenvolvimento de aplicativos do lado do servidor:

Qual o proximo?

Certifique-se de ler os tópicos relacionados a emuladores específicos vinculados acima. Então: