A Firebase CLI inclui um emulador do Cloud Functions que pode simular 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.
Execute funções localmente para testá-las antes da implantação na produção.
Instalar a CLI do Firebase
Para usar o emulador do Cloud Functions, primeiro instale a CLI do Firebase:
npm install -g firebase-tools
Para usar o emulador local, suas funções do Cloud Functions precisam dos requisitos a seguir:
firebase-admin
versão8.0.0
ou mais recente.firebase-functions
versão3.0.0
ou mais recente.
Configurar credenciais de administrador (opcional)
Para que os testes de funções interajam com outras APIs do Google ou do Firebase pelo SDK Admin do Firebase, talvez você precise configurar credenciais de administrador.
- Os gatilhos do Cloud Firestore e do Realtime Database já têm as credenciais necessárias e não requerem configuração adicional.
- Para todas as outras APIs, incluindo as APIs do Firebase (como Authentication e FCM) ou APIs do Google (como a Cloud Translation ou Cloud Speech), será necessário concluir as etapas de configuração descritas nesta seção. Isso se aplicará se você estiver usando o shell do Cloud Functions ou o
firebase emulators:start
.
Se quiser configurar credenciais de administrador para funções emuladas:
- Abra o painel de contas de serviço do console do Google Cloud.
- Verifique se a conta de serviço padrão do App Engine está selecionada e use o menu "opções" à direita para escolher Criar chave.
- Selecione JSON para a opção do tipo de chave e clique em Criar.
Defina suas credenciais padrão do Google para apontar para a chave salva:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Depois de concluir essas etapas, seus testes de funções poderão acessar as APIs do Firebase e
do Google usando o SDK Admin. Por exemplo, ao testar
um gatilho Authentication a função emulada poderá chamar
admin.auth().getUserByEmail(email)
.
Definir a configuração de funções (opcional)
Se você estiver usando variáveis de configuração de funções personalizadas, primeiro execute o
comando para receber a configuração personalizada (execute isso no diretório functions
)
no ambiente local:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Executar o Pacote de emuladores
Para executar o emulador do Cloud Functions, use o comando emulators:start
:
firebase emulators:start
O comando emulators:start
iniciará os emuladores para o Cloud Functions,
Cloud Firestore, Realtime Database e Firebase Hosting com base nos produtos
que você inicializou no seu projeto local usando firebase init
. Para iniciar um emulador específico, use a sinalização --only
:
firebase emulators:start --only functions
Para executar um conjunto de testes ou um script de teste após a inicialização
dos emuladores, use o comando emulators:exec
:
firebase emulators:exec "./my-test.sh"
Instruir o app para se comunicar com os emuladores
Para instruir seu app a interagir com os emuladores, pode ser necessário fazer outras configurações.
Instruir o app para funções chamáveis
Se as atividades de teste e protótipo envolverem funções de back-end chamáveis, configure a interação com o emulador do Cloud Functions para Firebase da seguinte maneira:
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);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
API modular da Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
API com namespace da Web
firebase.functions().useEmulator("127.0.0.1", 5001);
Instruir o app para emulação de funções HTTPS
Cada função HTTPS no seu código será disponibilizada 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 a região de host padrão seria disponibilizada em:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Instruir o app para emulação de funções acionadas em segundo plano
O emulador do Cloud Functions oferece suporte às funções acionadas em segundo plano das seguintes origens:
- Emulador do Realtime Database
- Emulador do Cloud Firestore
- Emulador do Authentication
- Emulador do Pub/Sub
Para acionar eventos em segundo plano, modifique os recursos de back-end usando a IU do Pacote de emuladores. Também é possível conectar seu app ou código de teste aos emuladores usando o SDK da sua plataforma.
Testar manipuladores de eventos personalizados emitidos por extensões
Em relação às funções implementadas para processar eventos personalizados das Extensões do Firebase com o Cloud Functions v2, o emulador do Cloud Functions faz o pareamento com o emulador do Eventarc para oferecer suporte aos Gatilhos do Eventarc.
Para testar os manipuladores de eventos personalizados das extensões que emitem eventos, instale os emuladores do Cloud Functions e do Eventarc.
O ambiente de execução do Cloud Functions vai definir a variável
de ambiente EVENTARC_EMULATOR
como localhost:9299
no processo atual se o emulador do Eventarc
estiver em execução. Os SDKs Admin do Firebase se conectam automaticamente ao emulador
do Eventarc quando a variável de ambiente EVENTARC_EMULATOR
está definida. É possível
modificar a porta padrão conforme descrito em Configurar o Pacote de emuladores locais.
Quando as variáveis de ambiente são configuradas corretamente, o SDK Admin do Firebase envia eventos automaticamente para o emulador do Eventarc, que faz um retorno de chamada ao emulador do Cloud Functions para acionar todos os manipuladores registrados.
É possível verificar os registros do Functions na IU do Pacote de emuladores para conferir detalhes sobre a execução do manipulador.
Interações com outros serviços
O conjunto inclui vários emuladores, que permitem o teste de interações entre produtos.
Cloud Firestore
Se você tiver funções que usam o SDK Admin do Firebase para gravar no Cloud Firestore, essas gravações serão enviadas ao emulador do Cloud Firestore, se ele estiver em execução. Se mais funções forem acionadas por essas gravações, elas serão executadas no emulador do Cloud Functions.
Cloud Storage
Se você tiver funções que usam o SDK Admin do Firebase (versão 9.7.0 ou mais recente) para gravar no Cloud Storage, essas gravações serão enviadas para o emulador do Cloud Storage, se ele estiver em execução. Se mais funções forem acionadas por essas gravações, elas serão executadas no emulador do Cloud Functions.
Firebase Authentication
Se você tiver funções que usam o SDK Admin do Firebase (versão 9.3.0 ou mais recente) para gravar no Firebase Authentication, essas gravações serão enviadas para o emulador do Authentication, se ele estiver em execução. Se mais funções forem acionadas por essas gravações, elas serão executadas no emulador do Cloud Functions.
Firebase Hosting
Se você usar o Cloud Functions para gerar conteúdo dinâmico para
o Firebase Hosting, o firebase emulators:start
vai usar suas funções HTTP locais como proxies para hospedagem.
Logging
O emulador transmite registros de suas funções para a janela do terminal em que eles são
executados. Ele exibe todos os resultados das instruções console.log()
, console.info()
,
console.error()
e console.warn()
dentro das suas funções.
Próximas etapas
Para conferir um exemplo completo de uso do pacote de emuladores do Firebase, consulte a Amostra do guia de início rápido de testes.