Firebase Data Connect udostępnia lokalny emulator do prototypowania end-to-end oraz procesów ciągłej integracji i ciągłego wdrażania (CI/CD):
- Emulator Data Connect współpracuje z lokalną zintegrowaną instancją bazy danych PGLite, aby umożliwić tworzenie prototypów zapytań i mutacji oraz testowanie kodu klienta w pełni lokalnym środowisku.
- Emulatora Data Connect można też używać do nieinteraktywnej pracy. Umożliwia uruchamianie testów automatycznych i jest odpowiedni do stosowania w procesach CI/CD. Jest to przydatne, gdy schematy są stabilne i chcesz tworzyć prototypy oraz testować kod po stronie klienta.
Ten przewodnik zawiera bardziej szczegółowe informacje o instalowaniu i używaniu emulatora niż przewodnik szybkiego startu.
Zainstaluj emulator Data Connect.
Zanim zainstalujesz Local Emulator Suite, aby korzystać z poziomu Data Connect, musisz mieć:
- Node.js w wersji 18.0 lub nowszej.
Zainstaluj interfejs wiersza poleceń Firebase i skonfiguruj katalog projektu
Zainstaluj interfejs wiersza poleceń Firebase, zgodnie z instrukcją instalacji. Pamiętaj o regularnym aktualizowaniu, ponieważ emulator Data Connect jest w trakcie aktywnego rozwoju i zawiera poprawki błędów oraz nowe funkcje.
Jeśli nie zostało to jeszcze zrobione, zainicjuj bieżący katalog roboczy jako projekt Firebase, postępując zgodnie z wyświetlanymi instrukcjami dotyczącymi wyboru usług:
firebase init
Ustawianie lub modyfikowanie konfiguracji Local Emulator Suite
Jeśli uruchomiono emulator Data Connect z rozszerzenia Firebase w VS Code, w razie potrzeby został on zainstalowany.
Aby ręcznie zainstalować emulator wraz z innymi wybranymi komponentami Local Emulator Suite, możesz użyć interfejsu wiersza poleceń Firebase. To polecenie uruchamia kreatora konfiguracji, który umożliwia wybranie interesujących Cię emulatorów, pobranie odpowiednich plików binarnych emulatora i ustawienie portów emulatora, jeśli domyślne nie są odpowiednie.
firebase init emulators
Po zainstalowaniu emulatora nie są wykonywane żadne sprawdzania aktualizacji ani dodatkowe automatyczne pobierania, dopóki nie zaktualizujesz wersji interfejsu wiersza poleceń Firebase.
Wybieranie projektu Firebase
W trakcie konfigurowania wiersz poleceń Firebase wyświetli prompt z prośbą o wybranie lub utworzenie projektu Firebase. Jeśli wybierzesz istniejący projekt skonfigurowany za pomocą Data Connect w konsoli Firebase, zostanie zaproponowana wybrana w nim konfiguracja.
Konfigurowanie emulatora
Konfigurowanie emulatora
Przeprowadzenie procesu firebase init
przeprowadzi Cię przez opcje konfiguracji emulatora.
Podobnie jak w przypadku innych emulatorów w Local Emulator Suite parametry konfiguracji są przechowywane w lokalnych plikach projektu.
- Plik
firebase.json
zawiera przypisania portów emulatora.- Klucz
emulators:ui
nie dotyczy emulatora Data Connect.
- Klucz
Praca z lokalnymi i produkcyjnymi zasobami Data Connect
Jeśli chcesz mieć pewność, że nie wpłyniesz na zasoby produkcyjne, ustaw demo-
projectID lub upewnij się, że kod klienta jest zinstrumentowany, aby nawiązywać połączenia z emulatorem, jak opisano w następnym rozdziale.
Uruchom emulator
Jeśli uruchamiasz emulator w trybie nieinteraktywnym, np. w ramach procesów CI/CD, uruchom go z opcją exec
.
firebase emulators:exec ./path/to/test-script.sh
Jeśli integrujesz w kodzie klienta zdefiniowane wstępnie zapytania i mutacje i używasz emulatora do testowania klientów, możesz użyć opcji start
do pracy interaktywnej. Możesz też uruchomić emulator z rozszerzenia VS Code.
firebase emulators:start
Dodaj do kodu klienta instrumenty umożliwiające komunikację z emulatorem
Aby skonfigurować konfigurację w aplikacji lub przetestować klasy, które mają wchodzić w interakcję z emulatorem Data Connect, wykonaj te czynności:
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 na Androidzie
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
Używanie emulatora do testowania i ciągłej integracji
Uruchamianie skonteneryzowanych obrazów Local Emulator Suite
Instalacja i konfiguracja Local Emulator Suite z kontenerami w typowej konfiguracji CI jest prosta.
Należy pamiętać o kilku kwestiach:
- Pliki binarne emulatora są instalowane i przechowywane w pamięci podręcznej na poziomie
~/.cache/firebase/emulators/
. Możesz dodać tę ścieżkę do konfiguracji pamięci podręcznej CI, aby uniknąć wielokrotnego pobierania. - Jeśli w Twoim repozytorium nie ma pliku
firebase.json
, musisz dodać argument wiersza poleceń do poleceniaemulators:start
lubemulators:exec
, aby określić, które emulatory mają być uruchamiane. Na przykład:--only dataconnect
.
Czyszczenie bazy danych między testami
Aby zresetować środowiska testowe między uruchomieniami, Firebase zaleca:
- Pisanie specjalnych mutacji do obsługi tych zadań:
- Podczas konfiguracji wypełnij lokalną instancję bazy danych danymi początkowymi.
- Podczas rozwiązywania problemu usuń zmodyfikowane dane z instancji bazy danych po teście.
Różnice między emulatorem Data Connect a wersją produkcyjną
Emulator Data Connect symuluje wiele funkcji produktu po stronie serwera. Są jednak pewne wyjątki:
- Wersja i szczegółowa konfiguracja PGLite mogą się różnić od wersji instancji produkcyjnej Cloud SQL.
- Jeśli używasz emulatora do tworzenia aplikacji z integracją interfejsu pgvector API i Vertex API w usłudze Data Connect, wywołania interfejsu Cloud Vertex API są wykonywane bezpośrednio, a nie przez integrację Vertex w usłudze Cloud SQL. Wywołania interfejsu API w produkcji są jednak nadal wykonywane, co oznacza, że musisz użyć prawdziwego projektu Firebase, a nie projektu
demo-
. Będą też naliczane koszty interfejsu Vertex API.