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 ao emulador do Realtime Database

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Antes de conectar seu aplicativo ao emulador do Realtime Database, certifique-se de entender o fluxo de trabalho geral do Firebase Local Emulator Suite e de instalar e configurar o Local Emulator Suite e revisar os comandos da CLI .

Escolha um projeto do Firebase

O Firebase Local Emulator Suite emula produtos para um único projeto do Firebase.

Para selecionar o projeto a ser usado, antes de iniciar os emuladores, na CLI, execute firebase use em seu diretório de trabalho. Ou você pode passar o sinalizador --project para cada comando do emulador.

O Local Emulator Suite oferece suporte à emulação de projetos reais do Firebase e projetos de demonstração .

Tipo de projeto Características Usar com emuladores
Real

Um projeto real do Firebase é aquele que você criou e configurou (provavelmente por meio do console do Firebase).

Projetos reais têm recursos ativos, como instâncias de banco de dados, buckets de armazenamento, funções ou qualquer outro recurso que você configurou para esse projeto do Firebase.

Ao trabalhar com projetos reais do Firebase, você pode executar emuladores para qualquer um ou todos os produtos compatíveis.

Para qualquer produto que você não esteja emulando, seus aplicativos e código irão interagir com o recurso ativo (instância de banco de dados, bucket de armazenamento, função etc.).

Demonstração

Um projeto de demonstração do Firebase não tem configuração real do Firebase nem recursos ativos. Esses projetos geralmente são acessados ​​via codelabs ou outros tutoriais.

IDs de projeto para projetos de demonstração têm o prefixo demo- .

Ao trabalhar com projetos de demonstração do Firebase, seus aplicativos e código interagem apenas com emuladores . Se seu aplicativo tentar interagir com um recurso para o qual um emulador não está em execução, esse código falhará.

Recomendamos que você use projetos de demonstração sempre que possível. Os benefícios incluem:

  • Configuração mais fácil, pois você pode executar os emuladores sem nunca criar um projeto do Firebase
  • Segurança mais forte, pois se o seu código invocar acidentalmente recursos não emulados (produção), não há chance de alteração de dados, uso e cobrança
  • Melhor suporte offline, pois não há necessidade de acessar a internet para baixar sua configuração do SDK.

Instrumente seu aplicativo para conversar com os emuladores

Plataformas Android, Apple e SDKs da Web

Configure sua configuração no aplicativo ou classes de teste para interagir com o Realtime Database da seguinte maneira.

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

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

Web version 8

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

Nenhuma configuração adicional é necessária para testar o Cloud Functions acionado por eventos do Realtime Database usando o emulador. Quando os emuladores do Realtime Database e do Cloud Functions estão em execução, eles funcionam automaticamente juntos.

SDKs de administração

Os SDKs Admin do Firebase se conectam automaticamente ao emulador do Realtime Database quando a variável de ambiente FIREBASE_DATABASE_EMULATOR_HOST é definida:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

Se seu código estiver sendo executado dentro do emulador do Cloud Functions, o ID do projeto e outras configurações serão definidas automaticamente ao chamar initalizeApp .

Se você quiser que o código do SDK Admin se conecte a um emulador compartilhado em execução em outro ambiente, será necessário especificar o mesmo ID do projeto definido usando a Firebase CLI . Você pode passar um ID de projeto para initializeApp diretamente ou definir a variável de ambiente GCLOUD_PROJECT .

SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variável de ambiente
export GCLOUD_PROJECT="your-project-id"

Limpe seu banco de dados entre os testes

Para liberar o Realtime Database entre as atividades, você pode limpar a referência do banco de dados. Você pode usar essa abordagem como uma alternativa para simplesmente encerrar o processo do emulador.

Android
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
Rápido
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web version 9

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web version 8

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

Naturalmente, seu código deve aguardar a confirmação de que a liberação foi concluída ou falhou usando os recursos de manipulação de eventos assíncronos de sua plataforma.

Tendo implementado uma etapa como essa, você pode sequenciar seus testes e acionar suas funções com a confiança de que os dados antigos serão eliminados entre as execuções e você está usando uma nova configuração de teste de linha de base.

Importar e exportar dados

O banco de dados e os emuladores do Cloud Storage para Firebase permitem exportar dados de uma instância de emulador em execução. Defina um conjunto de dados de linha de base para usar em seus testes de unidade ou fluxos de trabalho de integração contínua e exporte-o para ser compartilhado entre a equipe.

firebase emulators:export ./dir

Nos testes, na inicialização do emulador, importe os dados da linha de base.

firebase emulators:start --import=./dir

Você pode instruir o emulador a exportar dados no desligamento, especificando um caminho de exportação ou simplesmente usando o caminho passado para o sinalizador --import .

firebase emulators:start --import=./dir --export-on-exit

Essas opções de importação e exportação de dados também funcionam com o comando firebase emulators:exec . Para obter mais informações, consulte a referência de comando do emulador .

Visualize a atividade das regras de segurança

Conforme você trabalha com protótipos e loops de teste, você pode usar ferramentas de visualização e relatórios fornecidos pelo Local Emulator Suite.

Visualizar avaliações de regras

Conforme você adiciona regras de segurança ao seu protótipo, você pode depurá-las com as ferramentas do Local Emulator Suite.

Depois de executar um conjunto de testes, você pode acessar relatórios de cobertura de teste que mostram como cada uma de suas regras foi avaliada. Para obter os relatórios, consulte um ponto de extremidade exposto no emulador enquanto ele estiver em execução. Para uma versão amigável ao navegador, use o seguinte URL:

http://localhost:9000/.inspect/coverage?ns=<database_name>

Isso divide suas regras em expressões e subexpressões que você pode passar o mouse para obter mais informações, incluindo o número de execuções e valores retornados. Para a versão JSON bruta desses dados, inclua o seguinte URL em sua consulta:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

Qual o proximo?