Użyj emulatora rozszerzeń, aby ocenić rozszerzenia

Przed użyciem emulatora rozszerzeń w swojej aplikacji upewnij się, że rozumiesz ogólny przepływ pracy w pakiecie Firebase Local Emulator Suite oraz że instalujesz i konfigurujesz pakiet Local Emulator Suite oraz przeglądasz jego polecenia CLI .

W tym przewodniku założono również, że znasz rozszerzenia Firebase i wiesz, jak z nich korzystać w aplikacjach Firebase .

Co mogę zrobić z emulatorem rozszerzeń?

Dzięki emulatorowi rozszerzeń możesz instalować rozszerzenia i zarządzać nimi w bezpiecznym środowisku lokalnym, a także lepiej poznać ich możliwości, minimalizując jednocześnie koszty rozliczeniowe. Emulator uruchamia lokalnie funkcje rozszerzenia, w tym funkcje wyzwalane zdarzeniami w tle przy użyciu emulatorów Cloud Firestore, Realtime Database, Cloud Storage dla Firebase, uwierzytelniania i Pub/Sub oraz funkcji wyzwalanych przez Eventarc zaimplementowanych w Cloud Functions v2.

Wybierz projekt Firebase

Pakiet Firebase Local Emulator Suite emuluje produkty dla pojedynczego projektu Firebase.

Aby wybrać projekt do użycia, przed uruchomieniem emulatorów, w CLI uruchom firebase use w swoim katalogu roboczym. Możesz też przekazać flagę --project do każdego polecenia emulatora.

Local Emulator Suite obsługuje emulację prawdziwych projektów Firebase i projektów demonstracyjnych .

Typ projektu Cechy Używaj z emulatorami
Prawdziwy

Prawdziwy projekt Firebase to taki, który utworzyłeś i skonfigurowałeś (najprawdopodobniej za pomocą konsoli Firebase).

Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, zasobniki pamięci, funkcje lub inne zasoby skonfigurowane dla tego projektu Firebase.

Pracując z prawdziwymi projektami Firebase, możesz uruchomić emulatory dla dowolnego lub wszystkich obsługiwanych produktów.

W przypadku wszystkich produktów, których nie emulujesz, Twoje aplikacje i kod będą wchodzić w interakcję z aktywnym zasobem (instancją bazy danych, zasobnikiem pamięci, funkcją itp.).

Próbny

Projekt demonstracyjny Firebase nie ma prawdziwej konfiguracji Firebase ani aktywnych zasobów. Dostęp do tych projektów można zwykle uzyskać za pośrednictwem ćwiczeń z programowania lub innych samouczków.

Identyfikatory projektów demonstracyjnych mają przedrostek demo- .

Podczas pracy z projektami demonstracyjnymi Firebase Twoje aplikacje i kod wchodzą w interakcję wyłącznie z emulatorami. Jeśli aplikacja podejmie próbę interakcji z zasobem, dla którego nie działa emulator, wykonanie kodu zakończy się niepowodzeniem.

W miarę możliwości zalecamy korzystanie z projektów demonstracyjnych. Korzyści obejmują:

  • Łatwiejsza konfiguracja, ponieważ możesz uruchomić emulatory bez tworzenia projektu Firebase
  • Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowane zasoby (produkcyjne), nie ma szans na zmianę danych, wykorzystanie i rozliczenie
  • Lepsza obsługa w trybie offline, ponieważ nie ma potrzeby dostępu do Internetu, aby pobrać konfigurację SDK.

Zainstaluj i oceń rozszerzenie

Korzystanie z emulatora rozszerzeń w celu oceny, czy rozszerzenie spełnia Twoje potrzeby, jest proste.

Załóżmy, że interesuje Cię rozszerzenie Trigger Email ( firestore-send-email ), chociaż poniższy przepływ pracy obejmuje dowolne rozszerzenie. Po uruchomieniu z lokalnymi emulatorami Trigger Email automatycznie skorzysta z emulatorów Cloud Firestore i Cloud Functions.

Aby ocenić rozszerzenie lokalnie:

  1. Dodaj rozszerzenie do manifestu rozszerzeń lokalnych. Manifest rozszerzeń to lista instancji rozszerzeń i ich konfiguracji.

    firebase ext:install --local firebase/firestore-send-email

    Uruchomienie powyższego polecenia wyświetli monit o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-send-email i zapisanie konfiguracji w manifeście, ale nie spowoduje to wdrożenia konfiguracji w twoim projekcie. Aby uzyskać więcej informacji na ten temat, zobacz Zarządzanie konfiguracją rozszerzeń za pomocą manifestów

  2. Uruchom pakiet emulatorów lokalnych w zwykły sposób.

    firebase emulators:start

Teraz, korzystając z instancji rozszerzenia firestore-send-email wymienionej w manifeście, pakiet Local Emulator Suite pobierze kod źródłowy tego rozszerzenia do ~/.cache/firebase/extensions . Po pobraniu źródeł zostanie uruchomiony pakiet Local Emulator Suite, w którym będzie można uruchomić dowolne funkcje rozszerzenia uruchamiane w tle i połączyć aplikację z pakietem Local Emulator Suite, aby przetestować ich integrację z aplikacją.

Za pomocą interfejsu użytkownika pakietu Emulator Suite możesz dodawać dane do kolekcji dokumentów e-mailowych i konfigurować inne zasoby zaplecza, zgodnie z wymaganiami rozszerzenia Trigger Email.

Alternatywnie, w przypadku nieinteraktywnych środowisk testowych, takich jak przepływy pracy ciągłej integracji, możesz napisać skrypt testowy do oceny rozszerzenia, który między innymi zapełni niezbędne dane Cloud Firestore i uruchomi funkcje. Następnie wywołałbyś pakiet lokalnych emulatorów, aby wykonać skrypt testowy:

firebase emulators:exec my-test.sh

Czym testowanie za pomocą emulatora rozszerzeń różni się od wersji produkcyjnej

Emulator rozszerzeń umożliwia testowanie rozszerzeń w sposób ściśle odpowiadający środowisku produkcyjnemu. Istnieją jednak pewne różnice w zachowaniu produkcyjnym.

IAM w chmurze

Pakiet emulatora Firebase nie próbuje replikować ani szanować żadnych zachowań związanych z uprawnieniami podczas działania. Emulatory są zgodne z dostarczonymi regułami bezpieczeństwa Firebase, ale w sytuacjach, w których normalnie byłyby używane uprawnienia IAM, na przykład w celu ustawienia konta usługi wywołującej Cloud Functions, a tym samym uprawnień, emulator nie jest konfigurowalny i będzie korzystał z konta dostępnego globalnie na komputerze programisty, podobnie do bezpośredniego uruchamiania lokalnego skryptu.

Ograniczenie typu wyzwalania

Obecnie pakiet Firebase Local Emulator Suite obsługuje tylko funkcje wyzwalane żądaniami HTTP, niestandardowe wyzwalacze zdarzeń Eventarc dla rozszerzeń oraz funkcje wyzwalane zdarzeniami w tle dla Cloud Firestore, Realtime Database, Cloud Storage dla Firebase, uwierzytelniania i Pub/Sub. Aby ocenić rozszerzenia korzystające z innych typów wyzwalanych funkcji, musisz zainstalować rozszerzenie w testowym projekcie Firebase.

Co następne?