Firebase Data Connect bietet einen lokalen Emulator für End-to-End-Prototyping sowie CI/CD-Abläufe (Continuous Integration/Continuous Deployment):
- Der Data Connect-Emulator interagiert mit einer lokal integrierten PGLite-Datenbankinstanz, damit Sie Abfragen und Mutationen prototypisieren und Clientcode in einer vollständig lokalen Umgebung testen können.
- Der Data Connect-Emulator kann auch für nicht interaktive Aufgaben verwendet werden. Sie können damit automatisierte Tests ausführen und eignet sich für die Verwendung mit CI/CD-Workflows. Das ist nützlich, wenn Ihre Schemas stabil sind und Sie clientseitigen Code prototypisieren und testen möchten.
In diesem Leitfaden werden die Installation und Verwendung des Emulators ausführlicher beschrieben als in der Kurzanleitung.
Data Connect-Emulator installieren
Bevor Sie Local Emulator Suite installieren, um den Data Connect-Emulator zu verwenden, benötigen Sie Folgendes:
- Node.js-Version 18.0 oder höher
Firebase-CLI installieren und Projektverzeichnis einrichten
Installieren Sie die Firebase CLI. Folgen Sie dazu der Installationsanleitung. Aktualisieren Sie den Data Connect-Emulator regelmäßig, da er sich in aktiver Entwicklung befindet und regelmäßig um Fehlerkorrekturen und neue Funktionen ergänzt wird.
Falls noch nicht geschehen, initialisieren Sie das aktuelle Arbeitsverzeichnis als Firebase-Projekt. Folgen Sie der Anleitung, um anzugeben, welche Produkte verwendet werden sollen:
firebase init
Local Emulator Suite-Konfiguration festlegen oder ändern
Wenn Sie den Data Connect-Emulator über die Firebase-VS Code-Erweiterung gestartet haben, wurde er bei Bedarf für Sie installiert.
Sie können den Emulator mithilfe der Firebase-Befehlszeile zusammen mit anderen ausgewählten Komponenten der Local Emulator Suite manuell installieren. Mit diesem Befehl wird ein Konfigurationsassistent gestartet, mit dem Sie gewünschte Emulatoren auswählen, die entsprechenden Emulator-Binärdateien herunterladen und Emulatorports festlegen können, wenn die Standardeinstellungen nicht geeignet sind.
firebase init emulators
Nach der Installation eines Emulators werden keine Updates mehr geprüft und es werden keine weiteren automatischen Downloads durchgeführt, bis Sie die Firebase-CLI-Version aktualisieren.
Firebase-Projekt auswählen
Während der Einrichtung werden Sie von der Firebase CLI aufgefordert, ein Firebase-Projekt auszuwählen oder zu erstellen. Wenn Sie ein vorhandenes Projekt auswählen, das Sie in der Firebase-Konsole mit Data Connect eingerichtet haben, wird die dort ausgewählte Konfiguration vorgeschlagen.
Emulator einrichten
Emulator konfigurieren
Wenn Sie den firebase init
-Vorgang ausführen, werden Sie durch die Optionen zur Einrichtung des Emulators geführt.
Wie bei anderen Local Emulator Suite-Emulatoren werden Konfigurationsparameter in lokalen Projektdateien gespeichert.
- Ihre
firebase.json
-Datei enthält Emulator-Portzuweisungen.- Der
emulators:ui
-Schlüssel gilt nicht für den Data Connect-Emulator.
- Der
Mit lokalen und Produktions-Data Connect-Ressourcen arbeiten
Wenn Sie sicher sein möchten, dass keine Produktionsressourcen beeinträchtigt werden, legen Sie eine demo-
-Projekt-ID fest oder sorgen Sie dafür, dass Ihr Clientcode für die Verbindung zum Emulator instrumentiert ist, wie in einem späteren Abschnitt beschrieben.
Emulator starten
Wenn Sie den Emulator nicht interaktiv ausführen, z. B. für CI/CD-Workflows, starten Sie ihn mit der Option exec
.
firebase emulators:exec ./path/to/test-script.sh
Wenn Sie vordefinierte Abfragen und Mutationen in den Clientcode einbinden und den Emulator speziell zum Testen von Clients verwenden, können Sie die Option start
für die interaktive Arbeit verwenden. Sie können den Emulator auch über die VS Code-Erweiterung starten.
firebase emulators:start
Clientcode für die Kommunikation mit dem Emulator instrumentieren
So richten Sie Ihre In-App-Konfiguration oder Testklassen ein, damit sie mit dem Data Connect-Emulator interagieren:
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 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
Emulator für Tests und Continuous Integration verwenden
Containerisierte Local Emulator Suite-Images ausführen
Die Installation und Konfiguration von Local Emulator Suite mit Containern in einer typischen CI-Umgebung ist unkompliziert.
Beachten Sie dabei Folgendes:
- Emulator-Binärdateien werden unter
~/.cache/firebase/emulators/
installiert und im Cache gespeichert. Sie können diesen Pfad der CI-Cache-Konfiguration hinzufügen, um wiederholte Downloads zu vermeiden. - Wenn Sie keine
firebase.json
-Datei in Ihrem Repository haben, müssen Sie dem Befehlemulators:start
oderemulators:exec
ein Befehlszeilenargument hinzufügen, um anzugeben, welche Emulatoren gestartet werden sollen. Beispiel:--only dataconnect
.
Datenbank zwischen Tests löschen
Firebase empfiehlt, Ihre Testumgebungen zwischen den Ausführungen so zurückzusetzen:
- Schreiben von speziellen Mutationen für Folgendes:
- Fülle bei der Einrichtung eine lokale Datenbankinstanz mit Startdaten.
- Löschen Sie beim Rückbau geänderte Daten aus der Datenbankinstanz nach dem Test.
Unterschiede zwischen dem Data Connect-Emulator und der Produktion
Der Data Connect-Emulator simuliert viele Funktionen des serverseitigen Produkts. Es gibt jedoch einige Ausnahmen:
- Die Version und die detaillierte Konfiguration von PGLite können von der Version Ihrer Produktions-Cloud SQL-Instanz abweichen.
- Wenn Sie den Emulator verwenden, um mit der pgvector- und Vertex API-Integration von Data Connect zu entwickeln, werden Aufrufe an die Cloud Vertex API direkt und nicht über die Vertex-Integration von Cloud SQL ausgeführt. Es werden jedoch weiterhin Aufrufe an die Produktions-API gesendet. Sie müssen also ein echtes Firebase-Projekt verwenden und können kein
demo-
-Projekt verwenden. Außerdem fallen Kosten für die Vertex API an.