Ocena rozszerzeń za pomocą emulatora rozszerzeń

Zanim użyjesz emulatora Extensions w swojej aplikacji, zapoznaj się z całym procesem pracyFirebase Local Emulator Suite oraz zainstaluj i skonfigurujLocal Emulator Suite oraz zapoznaj się z komendacjami wiersza poleceń.

W tym przewodniku zakładamy też, że znasz usługę Firebase Extensions i wiesz, jak używać jej w aplikacjach Firebase.

Co mogę zrobić za pomocą emulatora Extensions?

Dzięki emulatorowi Extensions możesz instalować rozszerzenia i nimi zarządzać w bezpiecznym środowisku lokalnym oraz lepiej poznać ich możliwości, jednocześnie minimalizując koszty rozliczeń. Emulator uruchamia funkcje rozszerzenia lokalnie, w tym funkcje wywoływane przez zdarzenia w tle za pomocą emulatorów Cloud Firestore, Realtime Database, Cloud Storage for Firebase, AuthenticationPub/Sub oraz funkcje wywoływane przez Eventarc zaimplementowane w Cloud Functions w wersji 2.

Wybierz projekt Firebase

Funkcja Firebase Local Emulator Suite emuluje produkty z jednego projektu Firebase.

Aby wybrać projekt, który ma być używany, przed uruchomieniem emulatorów uruchom w CLI polecenie firebase use w katalogu roboczym. Możesz też przekazać parametr --project do każdego polecenia emulatora.

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

Typ projektu Funkcje Używanie z emulatorami
Real

Prawdziwy projekt Firebase to taki, który został utworzony i skonfigurowany (najprawdopodobniej w konsoli Firebase).

Prawdziwe projekty mają aktywne zasoby, takie jak instancje bazy danych, kontenery magazynu, funkcje lub inne zasoby skonfigurowane w danym projekcie Firebase.

Podczas pracy z prawdziwymi projektami Firebase możesz uruchamiać emulatory dla wszystkich lub niektórych obsługiwanych usług.

W przypadku usług, których nie emulujesz, Twoje aplikacje i kod będą wchodzić w interakcję z aktywnymi zasobami (instancjami baz danych, zasobnikami, funkcjami itp.).

Wersja demonstracyjna

Demonstracyjny projekt Firebase nie ma rzeczywistej konfiguracji Firebase i żadnych zasobów w produkcji. Do tych projektów zwykle uzyskuje się dostęp za pomocą ćwiczeń z programowania lub innych samouczków.

Identyfikatory projektów demonstracyjnych mają prefiks demo-.

Podczas pracy z demonstracyjnymi projektami Firebase aplikacje i kod będą wchodzić w interakcje z emulatorami tylko. Jeśli aplikacja spróbuje wejść w interakcję z zasobem, dla którego emulator nie jest uruchomiony, ten kod zakończy się niepowodzeniem.

W miarę możliwości zalecamy korzystanie z projektów demonstracyjnych. W ten sposób możesz zapewnić im dostęp do tych korzyści:

  • Łatwiejsza konfiguracja, ponieważ możesz uruchamiać emulatory bez tworzenia projektu Firebase.
  • Silniejsze bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła zasoby nieemulowane (produkcyjne), nie ma szans na zmianę danych, ich wykorzystanie i płatności
  • lepszą obsługę offline, ponieważ do pobrania konfiguracji pakietu SDK nie jest potrzebny dostęp do internetu;

Instalowanie i ocenianie rozszerzenia

Oceń, czy rozszerzenie spełnia Twoje potrzeby, za pomocą emulatora Extensions.

Załóżmy, że interesuje Cię rozszerzenie (firestore-send-email) E-maila z wyzwalaczem (firestore-send-email), chociaż omówiony poniżej proces dotyczy dowolnego rozszerzenia. W przypadku uruchamiania na lokalnych emulatorach narzędzie Trigger Email automatycznie użyje emulatorów Cloud Firestore i Cloud Functions.

Aby ocenić rozszerzenie lokalnie:

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

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

    Po wykonaniu tego polecenia pojawi się prośba o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-send-email i zapisanie konfiguracji w pliku manifestu. Nie zostanie jednak wdrożona konfiguracja w Twoim projekcie. Więcej informacji znajdziesz w artykule Zarządzanie konfiguracją rozszerzeń za pomocą plików manifestu.

  2. Uruchom Local Emulator Suite jak zwykle.

    firebase emulators:start

Teraz, korzystając z instancji rozszerzenia firestore-send-email wymienionej w pliku manifestu, Local Emulator Suite pobierze kod źródłowy tego rozszerzenia do ~/.cache/firebase/extensions. Po pobraniu źródeł Local Emulator Suite zostanie uruchomiony i będziesz mieć możliwość wywołania dowolnej funkcji rozszerzenia wywoływanej w tle oraz połączenia aplikacji z Local Emulator Suite, aby przetestować integrację z Twoją aplikacją.

Za pomocą Emulator Suite UI możesz dodawać dane do kolekcji dokumentów e-maila oraz konfigurować inne zasoby backendu zgodnie z wymaganiami rozszerzenia Trigger Email.

W przypadku nieinteraktywnych środowisk testowych, np. przepływów pracy w trybie ciągłej integracji, możesz też napisać skrypt testowy, by ocenić rozszerzenie, które między innymi uzupełnia niezbędne dane Cloud Firestore i uruchamia funkcje. Następnie wywołujesz Local Emulator Suite, aby wykonać skrypt testowy:

firebase emulators:exec my-test.sh

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

Emulator Extensions umożliwia testowanie rozszerzeń w sposób zbliżony do środowiska produkcyjnego. Występują jednak pewne różnice w działaniu w porównaniu z wersją produkcyjną.

Cloud IAM

Pakiet emulatorów Firebase nie próbuje odwzorowywać ani uwzględniać podczas działania żadnych zachowań związanych z IAM. Emulatory przestrzegają reguł zabezpieczeń Firebase, ale w sytuacjach, w których zwykle używane jest IAM, np. do konfigurowania wywołań konta usługi Cloud Functions i odpowiednich uprawnień, emulator nie jest konfigurowalny i używa konta dostępnego globalnie na Twoim urządzeniu dewelopera, podobnie jak w przypadku bezpośredniego uruchamiania skryptu lokalnego.

Ograniczenie typu wyzwalania

Obecnie Firebase Local Emulator Suite obsługuje tylko funkcje wywoływane przez żądania HTTP, niestandardowe aktywatory zdarzeń Eventarc dla rozszerzeń oraz funkcje wywoływane przez zdarzenia w tle w przypadku Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication i Pub/Sub. Aby ocenić rozszerzenia, które używają innych typów funkcji wywoływanych, musisz zainstalować rozszerzenie w testowym projekcie Firebase.

Co dalej?