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 Firebase Extensions i wiesz, jak ich używać w aplikacjach Firebase.

Co mogę zrobić za pomocą emulatora Extensions?

Za pomocą emulatora 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.

Wybieranie projektu Firebase

Firebase Local Emulator Suite emuluje usługi w pojedynczym projekcie 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 magazynu, funkcjami itp.).

Prezentacja

Demonstracyjny projekt Firebase nie ma rzeczywistej konfiguracji Firebase ani ż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 próbuje wchodzić w interakcję z zasobem, dla którego nie działa emulowany system, kod nie zadziała.

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.
  • Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowane (produkcyjne) zasoby, nie ma możliwości zmiany danych, ich użycia ani rozliczenia.
  • lepsza obsługa trybu offline, ponieważ do pobrania konfiguracji pakietu SDK nie jest potrzebne połączenie z internetem;

Instalowanie i ocenianie rozszerzenia

Sprawdzenie, czy rozszerzenie spełnia Twoje potrzeby, jest proste dzięki emulatorowi Extensions.

Załóżmy, że interesuje Cię rozszerzenie (firestore-send-email) E-mail z wyzwalaczem, ale poniższy proces dotyczy dowolnego rozszerzenia. Podczas uruchamiania z lokalnymi emulatorami narzędzie Trigger Email automatycznie korzysta z emulatorów Cloud FirestoreCloud 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 środowisk testowania nieinterakcyjnego, takich jak ciągłe przepływy pracy integracji, możesz napisać skrypt testowy do oceny rozszerzenia, który między innymi wypełnia niezbędne dane Cloud Firestore i uruchamia funkcje. Następnie wywołaj Local Emulator Suite, aby wykonać skrypt testowy:

firebase emulators:exec my-test.sh
.

Różnice między testowaniem w emulatorze Extensions a testowaniem w 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 produkcją.

Cloud IAM

Pakiet emulatorów Firebase nie próbuje odwzorowywać ani respektować zachowania związanych z IAM. Emulatory przestrzegają dostarczonych reguł zabezpieczeń Firebase, ale w sytuacjach, w których zwykle używane są reguły IAM, np. do konfigurowania wywołań funkcji Cloud Functions przez konto usługi i w ten sposób uprawnień, emulator nie jest konfigurowalny i będzie używać konta dostępnego globalnie na Twoim komputerze 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 żądanie 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?