O Firebase Data Connect fornece um emulador local para prototipagem de ponta a ponta, além de fluxos de integração e implantação contínuas (CI/CD):
- O emulador Data Connect interage com um ambiente integrado local Instância do banco de dados PGLite para prototipar consultas e mutações e fazer testes em um ambiente totalmente local.
- O emulador Data Connect também pode ser usado para trabalhos não interativos. Ele permite executar testes automatizados e é adequado para uso com fluxos de trabalho de CI/CD. Isso é útil quando seus esquemas são estáveis e você quer criar protótipos e testar o código do lado do cliente.
Este guia aborda a instalação e o uso do emulador com mais detalhes do que o guia de início rápido.
Instalar o emulador Data Connect
Antes de instalar o Local Emulator Suite para usar o emulador Data Connect, você vai precisar do seguinte:
- Node.js versão 18.0 ou mais recente
Instalar a CLI Firebase e configurar o diretório do projeto
Instale a CLI Firebase, seguindo o guia de instalação. Faça atualizações regularmente, já que o emulador Data Connect está em desenvolvimento ativo com correções de bugs e novos recursos.
Inicialize o diretório de trabalho atual como um projeto do Firebase, com os comandos a seguir para especificar quais produtos usar:
firebase init
Definir ou modificar a configuração de Local Emulator Suite
Se você iniciou o emulador Data Connect no Firebase VS Code , o emulador foi instalado para você, se necessário.
Você pode usar a CLI Firebase para instalar manualmente o emulador com o e outros componentes selecionados do Local Emulator Suite. Esse comando inicia um assistente de configuração que permite selecionar emuladores do seu interesse, fazer o download dos arquivos binários do emulador correspondentes e definir as portas do emulador se os padrões não forem apropriados.
firebase init emulators
Depois que um emulador é instalado, nenhuma verificação de atualização é realizada os downloads automáticos vão ocorrer até você atualizar a versão da CLI Firebase.
Escolher um projeto do Firebase
No fluxo de configuração, a CLI Firebase solicita que você escolha ou crie um projeto do Firebase. Se você escolher um projeto existente configurado com Data Connect no console do Firebase, a configuração que você escolheu serão sugeridos.
Configurar o emulador
Configurar o emulador
A execução do fluxo firebase init
vai orientar você pelas opções de configuração do emulador.
Como outros emuladores no Local Emulator Suite, os parâmetros de configuração
são armazenados em arquivos de projeto locais.
- O arquivo
firebase.json
contém atribuições de porta do emulador.- A chave
emulators:ui
não se aplica ao emulador Data Connect.
- A chave
Trabalhar com recursos Data Connect locais e de produção
Se você quiser ter certeza de que não vai afetar os recursos de produção, defina um projectID
demo-
ou verifique se o código do cliente está instrumentado para se conectar ao
emulador, conforme discutido em uma seção posterior.
Iniciar o emulador
Se você estiver executando o emulador de forma não interativa, por exemplo, para CI/CD
de trabalho, comece com a opção exec
.
firebase emulators:exec ./path/to/test-script.sh
Se você estiver integrando consultas e mutações predefinidas no código do cliente e estiver
Com o emulador especificamente para testar clientes, use o método start
opção para trabalhos interativos. Também é possível iniciar o emulador no VS Code
.
firebase emulators:start
Instruir o código de cliente para se comunicar com o emulador
Defina a configuração no app ou as classes de teste para interagir com o emulador do Data Connect conforme mostrado a seguir.
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin para Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
Usar o emulador para testes e integração contínua
Executar imagens Local Emulator Suite conteinerizadas
A instalação e a configuração do Local Emulator Suite com contêineres em uma configuração de CI típica são simples.
Fique atento a alguns problemas:
- Os binários do emulador são instalados e armazenados em cache
~/.cache/firebase/emulators/
: Recomendamos adicionar esse caminho ao cache de CI para evitar downloads repetidos. - Se você não tiver um arquivo
firebase.json
no seu repositório, adicione um argumento de linha de comando ao comandoemulators:start
ouemulators:exec
para especificar quais emuladores devem ser iniciados. Por exemplo,--only dataconnect
.
Limpar o banco de dados entre os testes
Para redefinir os ambientes de teste entre as execuções, o Firebase recomenda o seguinte:
- Escrever mutações dedicadas para lidar com o seguinte:
- Na configuração, preencha uma instância de banco de dados local com dados iniciais.
- Na eliminação, exclua os dados modificados da instância do banco de dados pós-teste.
Qual é a diferença entre o emulador do Data Connect e a produção?
O emulador Data Connect simula muitos recursos do produto no lado do servidor. No entanto, há algumas exceções:
- A versão e a configuração detalhada do PGLite podem ser diferentes da versão da instância de produção do Cloud SQL.
- Se você está usando o emulador para desenvolver com os recursos de Data Connect
pgvector e integração da API Vertex, são feitas chamadas para a API Cloud Vertex
diretamente, e não pela integração Vertex do Cloud SQL. No entanto, as chamadas
API de produção ainda são feitas, o que significa que é preciso usar uma implementação real do
não pode usar um projeto do
demo-
, e os custos da API Vertex serão incorridas.