O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Conectar o app e começar a prototipagem

Antes de começar a usar o Pacote do emulador local do Firebase, crie um projeto do Firebase, configure o ambiente de desenvolvimento e selecione e instale os SDKs do Firebase na sua plataforma de acordo com os tópicos Primeiros passos com o Firebase da sua plataforma: iOS, Android ou Web.

Desenvolver protótipos e testar

O Pacote do emulador local contém vários emuladores de produtos, conforme descrito na Introdução ao Pacote do emulador local do Firebase. É possível criar protótipos e testar com emuladores individuais, assim como combinações de emuladores, conforme achar adequado, que correspondam aos produtos do Firebase que você está usando na produção.

Interação entre o banco de dados do Firebase e emuladores de funções
Emuladores do Database e Cloud Functions como parte do Pacote do emulador local completo.

Neste tópico, para apresentar o fluxo de trabalho do Pacote do emulador local, vamos supor que você esteja trabalhando em um app que usa uma combinação típica de produtos: um banco de dados do Firebase e funções do Cloud acionadas por operações nesse banco de dados.

Depois que você inicializar localmente o projeto do Firebase, o ciclo de desenvolvimento usando o Pacote do emulador local geralmente terá três etapas:

  1. O protótipo funciona interativamente com os emuladores e a IU do Pacote do emulador.

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

  3. Automatize os testes com os emuladores e scripts personalizados.

Inicializar localmente um projeto do Firebase

Instale a CLI ou atualize para a versão mais recente.

curl -sL firebase.tools | bash

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

firebase init

O diretório do 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 functions contendo o código de funções do Cloud e outros arquivos de suporte.

Desenvolver protótipos de maneira interativa

O Pacote do emulador local foi projetado para permitir a criação de protótipos de novos recursos rapidamente, e a interface de usuário integrada do Pacote é uma das ferramentas de prototipagem mais úteis. É como executar o Console do Firebase localmente.

Com a IU do Pacote do emulador, é possível iterar o design de um banco de dados, testar diferentes fluxos de dados que envolvem funções do Cloud, avaliar alterações de regras de segurança, verificar registros para confirmar o desempenho dos serviços de back-end e muito mais. Depois, se você quiser começar de novo, limpe o banco de dados e recomece com uma nova ideia de design.

Tudo está disponível quando você inicia o Pacote do emulador local com:

firebase emulators:start

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

  1. Crie uma função do Cloud acionada por gravações em banco de dados editando o arquivo functions/index.js no diretório do projeto. Substitua o conteúdo do arquivo atual pelo snippet a seguir. Essa função detecta alterações em documentos na coleção messages, converte o conteúdo do campo original de um documento em maiúsculas e armazena o resultado no campo uppercase dele.
  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 Pacote do emulador local com firebase emulators:start. O Cloud Functions e os emuladores de banco de dados são inicializados, configurados automaticamente para interoperar.
  4. Veja a IU no seu navegador em http://localhost:4000. A porta 4.000 é o padrão para a IU, mas verifique as mensagens do terminal enviadas pela Firebase CLI. Observe o status dos emuladores disponíveis. Nesse caso, os emuladores do Cloud Functions e do Cloud Firestore serão executados.
    Minha imagem
  5. Na IU, na guia Firestore, clique em Iniciar coleção e siga as instruções para criar um novo documento em uma coleção messages, com nome do campo original e valor test. Isso aciona nossa função do Cloud. Observe que um novo campo uppercase aparecerá logo em seguida, preenchido com a string "TEST".
    Minha imagem Minha imagem
  6. Verifique a guia Registros para confirmar se a função não encontrou erros durante a atualização do banco de dados.

É possível iterar facilmente entre o código da função do Cloud e as edições interativas do banco de dados até receber o fluxo de dados que você está procurando, sem tocar no código de acesso do banco de dados no app, recompilar e executar novamente os conjuntos de testes.

Conectar seu app aos emuladores

Quando tiver feito um bom progresso com a criação de protótipos interativos e tiver definido um design, estará tudo pronto para adicionar o código de acesso ao banco de dados usando o SDK apropriado. Você continuará usando a guia do banco de dados e, para funções, a guia Registros na IU do Pacote do emulador para confirmar se o comportamento do app está correto.

Lembre-se de que o Pacote do emulador local é uma ferramenta de desenvolvimento local. As gravações nos bancos de dados de produção não acionarão funções que você está criando localmente.

Para que o aplicativo faça gravações no banco de dados, você precisa apontar as classes de teste ou a configuração no app para o emulador do Cloud Firestore.

Android
        // 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);
iOS – Swift
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web v8

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

Web v9

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

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
useFirestoreEmulator(db, 'localhost', 8080);
Web
// Initialize your Web app as described in the Get started for Web
// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

Automatizar seus testes com scripts personalizados

Agora vamos para a última etapa geral do fluxo de trabalho. Depois de prototipar seu recurso no app e ele parecer promissor em todas as plataformas, você poderá recorrer à implementação e ao teste finais. Para testes de unidade e fluxos de trabalho de CI, é possível iniciar emuladores, executar testes de script e encerrar emuladores em uma única chamada com o comando exec:

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

Explorar emuladores individuais em mais detalhes

Agora que você já sabe a aparência do fluxo de trabalho básico do cliente, é possível continuar com detalhes sobre os emuladores individuais no Pacote, incluindo como usá-los para o desenvolvimento de apps do servidor:

A seguir

Leia os tópicos relacionados a emuladores específicos indicados acima. Depois, siga estas instruções: