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 einem lokal integrierten PGLite-Datenbankinstanz, mit der Sie Prototypen für Abfragen und Mutationen erstellen und testen können in einer vollständig lokalen Umgebung zu erstellen.
- Der Data Connect-Emulator kann auch für nicht interaktive Aufgaben verwendet werden. Damit können Sie automatisierte Tests ausführen und es 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
Vor der Installation von Local Emulator Suite zur Verwendung von Data Connect Emulator erstellen, benötigen Sie Folgendes:
- Node.js-Version 18.0 oder höher.
Firebase-CLI installieren und Projektverzeichnis einrichten
Installieren Sie die Firebase-Befehlszeile gemäß 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.
Initialisieren Sie, falls noch nicht geschehen, das aktuelle Arbeitsverzeichnis als Ein Firebase-Projekt. Geben Sie dabei mithilfe von Aufforderungen an, welche Produkte verwendet werden sollen:
firebase init
Local Emulator Suite-Konfiguration festlegen oder ändern
Wenn Sie den Data Connect-Emulator über Firebase VS Code gestartet haben wurde der Emulator für Sie installiert.
Sie können die Firebase-Befehlszeile verwenden, um den Emulator zusammen mit weitere ausgewählte Komponenten von Local Emulator Suite. Dieser Befehl startet eine Konfigurationsassistenten, mit dem Sie relevante Emulatoren auswählen können, laden Sie die entsprechenden Emulator-Binärdateien und legen Sie die Emulator-Ports fest, wenn die Standardeinstellungen nicht angemessen ist.
firebase init emulators
Sobald ein Emulator installiert ist, werden keine Updateprüfungen durchgeführt und keine zusätzlichen Automatische Downloads finden statt, bis Sie die Version der Firebase-Befehlszeile aktualisieren.
Firebase-Projekt auswählen
Während der Einrichtung werden Sie von der Firebase-Befehlszeile aufgefordert, eine Firebase-Projekt Wenn Sie ein vorhandenes Projekt auswählen, mit dem Sie Data Connect in der Firebase-Konsole, die von Ihnen ausgewählte Konfiguration werden Vorschläge angezeigt.
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 Emulatoren in Local Emulator Suite werden auch Konfigurationsparameter
werden 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 Ressourcen und Data Connect-Produktionsressourcen 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
können Sie mit der Option exec
beginnen.
firebase emulators:exec ./path/to/test-script.sh
Wenn Sie vordefinierte Abfragen und Mutationen in den Clientcode einbinden und
Wenn Sie den Emulator speziell zum Testen von Clients verwenden, können Sie den start
verwenden.
Option für interaktive Arbeiten. Sie können den Emulator auch über die VS Code-Erweiterung starten.
firebase emulators:start
Clientcode instrumentieren, um mit dem Emulator zu kommunizieren
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 für 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
Local Emulator Suite-Container-Images ausführen
Die Installation und Konfiguration von Local Emulator Suite mit Containern in einer typischen CI-Umgebung ist unkompliziert.
Es sind einige Probleme zu beachten:
- Emulator-Binärdateien werden unter
~/.cache/firebase/emulators/
installiert und im Cache gespeichert. Sie können diesen Pfad Ihrem CI-Cache 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 den Tests löschen
Firebase empfiehlt, Ihre Testumgebungen zwischen den Ausführungen so zurückzusetzen:
- Schreiben von speziellen Mutationen für Folgendes:
- Füllen Sie bei der Einrichtung eine lokale Datenbankinstanz mit Ausgangsdaten.
- 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 Features der serverseitigen Produkt. 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. Anrufe
an die Production API hergestellt werden,
d. h., Sie müssen eine echte Firebase-
Projekt kann kein
demo-
-Projekt verwenden und die Kosten für die Vertex API betragen anfallen.