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

Executar funções localmente

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

A Firebase CLI inclui um emulador Cloud Functions que pode emular os seguintes tipos de função:

  • funções HTTPS
  • funções chamáveis
  • Funções em segundo plano acionadas pelo Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage e Cloud Pub/Sub.

Você pode executar funções localmente para testá-las antes de implantá-las na produção.

Instale a CLI do Firebase

Para usar o emulador do Cloud Functions, primeiro instale o Firebase CLI:

npm install -g firebase-tools

Para usar o emulador local, seu Cloud Functions deve depender de:

  • firebase-admin versão 8.0.0 ou superior.
  • firebase-functions versão 3.0.0 ou superior.

Configurar credenciais de administrador (opcional)

Se você deseja que seus testes de funções interajam com as APIs do Google ou outras APIs do Firebase por meio do Firebase Admin SDK , pode ser necessário configurar credenciais de administrador.

  • Os gatilhos Cloud Firestore e Realtime Database já têm credenciais suficientes e não requerem configuração adicional.
  • Todas as outras APIs, incluindo APIs do Firebase, como Authentication e FCM, ou APIs do Google, como Cloud Translation ou Cloud Speech, exigem as etapas de configuração descritas nesta seção. Isso se aplica se você estiver usando o shell do Cloud Functions ou os firebase emulators:start .

Para configurar credenciais de administrador para funções emuladas:

  1. Abra o painel Contas de serviço do Console do Google Cloud.
  2. Certifique-se de que a conta de serviço padrão do App Engine esteja selecionada e use o menu de opções à direita para selecionar Criar chave .
  3. Quando solicitado, selecione JSON para o tipo de chave e clique em Criar .
  4. Defina suas credenciais padrão do Google para apontar para a chave baixada:

    Unix

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase emulators:start
    

    janelas

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

Depois de concluir essas etapas, seus testes de funções podem acessar as APIs do Firebase e do Google usando o Admin SDK . Por exemplo, ao testar um acionador de autenticação, a função emulada pode chamar admin.auth().getUserByEmail(email) .

Definir configuração de funções (opcional)

Se você estiver usando variáveis ​​de configuração de funções personalizadas, primeiro execute o comando para obter sua configuração personalizada (execute isso no diretório de functions ) em seu ambiente local:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Execute o pacote do emulador

Para executar o emulador do Cloud Functions, use o comando emulators:start :

firebase emulators:start

O comando emulators:start iniciará emuladores para Cloud Functions, Cloud Firestore, Realtime Database e Firebase Hosting com base nos produtos que você inicializou em seu projeto local usando firebase init . Se você deseja iniciar um emulador específico, use o sinalizador --only :

firebase emulators:start --only functions

Se você deseja executar um conjunto de testes ou um script de teste após o início dos emuladores, use o comando emulators:exec :

firebase emulators:exec "./my-test.sh"

Instrumente seu aplicativo para conversar com os emuladores

Para instrumentar seu aplicativo para interagir com os emuladores, talvez seja necessário fazer algumas configurações adicionais.

Instrumente seu aplicativo para funções que podem ser chamadas

Se suas atividades de protótipo e teste envolverem funções de back -end que podem ser chamadas , configure a interação com o emulador do Cloud Functions para Firebase da seguinte forma:

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 functions = Firebase.functions
functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFunctions functions = FirebaseFunctions.getInstance();
functions.useEmulator("10.0.2.2", 5001);
Rápido
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

Instrumente seu aplicativo para emulação de funções HTTPS

Cada função HTTPS em seu código será fornecida pelo emulador local usando o seguinte formato de URL:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Por exemplo, uma função helloWorld simples com a porta e região do host padrão seria atendida em:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Instrumente seu aplicativo para emulação de funções acionadas em segundo plano

O emulador do Cloud Functions é compatível com funções acionadas em segundo plano das seguintes fontes:

  • Emulador de banco de dados em tempo real
  • Emulador Cloud Firestore
  • emulador de autenticação
  • Emulador Pub/Sub

Para acionar eventos em segundo plano, modifique os recursos de back-end usando a IU do Emulator Suite ou conectando seu aplicativo ou código de teste aos emuladores usando o SDK para sua plataforma.

Manipuladores de teste para eventos personalizados emitidos por extensões

Para funções que você implementa para lidar com eventos personalizados do Firebase Extensions com o Cloud Functions v2, o emulador do Cloud Functions é emparelhado com o emulador Eventarc para oferecer suporte a gatilhos Eventarc .

Para testar manipuladores de eventos personalizados para extensões que emitem eventos, você deve instalar os emuladores Cloud Functions e Eventarc.

O tempo de execução do Cloud Functions define a variável de ambiente EVENTARC_EMULATOR como localhost:9299 no processo atual se o emulador Eventarc estiver em execução. Os Firebase Admin SDKs se conectam automaticamente ao emulador Eventarc quando a variável de ambiente EVENTARC_EMULATOR é definida. Você pode modificar a porta padrão conforme discutido em Configure Local Emulator Suite .

Quando as variáveis ​​de ambiente são configuradas corretamente, o Firebase Admin SDK envia eventos automaticamente para o emulador Eventarc. Por sua vez, o emulador Eventarc faz uma chamada de volta para o emulador Cloud Functions para acionar qualquer manipulador registrado.

Você pode verificar os logs de funções na interface do usuário do pacote do emulador para obter detalhes sobre a execução do manipulador.

Interações com outros serviços

O conjunto de emuladores inclui vários emuladores, que permitem o teste de interações entre produtos.

Cloud Firestore

Se você tiver funções que usam o Firebase Admin SDK para gravar no Cloud Firestore, essas gravações serão enviadas para o emulador do Cloud Firestore se ele estiver em execução. Se outras funções forem acionadas por essas gravações, elas serão executadas no emulador do Cloud Functions.

Armazenamento na núvem

Se você tiver funções que usam o Firebase Admin SDK (versão 9.7.0 ou superior) para gravar no Cloud Storage, essas gravações serão enviadas para o emulador do Cloud Storage, se estiver em execução. Se outras funções forem acionadas por essas gravações, elas serão executadas no emulador do Cloud Functions.

Autenticação do Firebase

Se você tiver funções que usam o Firebase Admin SDK (versão 9.3.0 ou superior) para gravar no Firebase Authentication, essas gravações serão enviadas para o emulador Auth se estiver em execução. Se outras funções forem acionadas por essas gravações, elas serão executadas no emulador do Cloud Functions.

Hospedagem Firebase

Se você estiver usando o Cloud Functions para gerar conteúdo dinâmico para o Firebase Hosting , o firebase emulators:start usará suas funções HTTP locais como proxies para hospedagem.

Exploração madeireira

O emulador transmite logs de suas funções para a janela do terminal onde eles são executados. Ele exibe todas as saídas das console.log() , console.info() , console.error() e console.warn() dentro de suas funções.

Próximos passos

Para obter um exemplo completo de como usar o conjunto de emuladores do Firebase, consulte o exemplo de início rápido de teste .