Ocena rozszerzeń za pomocą emulatora rozszerzeń

Zanim zaczniesz używać emulatora Extensions w aplikacji, upepewnij się, że rozumiesz ogólny proces Firebase Local Emulator Suite workflow, oraz że zainstalujesz i skonfigurujesz Local Emulator Suite i zapoznasz się z jego poleceniami CLI.

Ten przewodnik zakłada też, że znasz Firebase Extensions i wiesz, jak ich używać w aplikacjach Firebase.

Co mogę zrobić za pomocą emulatora Extensions?

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

Wybierz projekt Firebase

Firebase Local Emulator Suite emuluje usługi w jednym projekcie Firebase.

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

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

Typ projektu Funkcje Użycie z emulatorami
Rzeczywisty

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

Rzeczywiste projekty mają zasoby na żywo, takie jak instancje bazy danych, zasobniki pamięci , funkcje lub inne zasoby skonfigurowane w tym projekcie Firebase.

Podczas pracy z rzeczywistymi projektami Firebase możesz uruchamiać emulatory dla dowolnej lub wszystkich obsługiwanych usług.

W przypadku usług, które nie są emulowane, Twoje aplikacje i kod będą wchodzić w interakcje z zasobem na żywo (instancją bazy danych, zasobnikiem pamięci, funkcją itp.).

Demonstracyjny

Projekt demonstracyjny Firebase nie ma rzeczywistej konfiguracji Firebase ani zasobów na żywo. Dostęp do tych projektów jest zwykle uzyskiwany za pomocą codelabs lub innych samouczków.

Identyfikatory projektów demonstracyjnych mają prefiks demo-.

Podczas pracy z demonstracyjnymi projektami Firebase Twoje aplikacje i kod wchodzą w interakcje z emulatorami tylko. Jeśli aplikacja spróbuje wejść w interakcję z zasobem dla którego nie jest uruchomiony emulator, kod się nie wykona.

Zalecamy używanie projektów demonstracyjnych wszędzie tam, gdzie to możliwe. 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 szans na zmianę danych, użycie i rozliczenia.
  • Lepsza obsługa offline, ponieważ nie musisz uzyskiwać dostępu do internetu, aby pobrać konfigurację pakietu SDK.
Cloud FunctionsSecurity RulesAuthenticationFirebase

Instalowanie i ocenianie rozszerzenia

Ocena, czy rozszerzenie spełnia Twoje potrzeby, za pomocą emulatora Extensions jest prosta.

Załóżmy, że interesuje Cię rozszerzenie Trigger Email (firestore-send-email) extension, ale ten proces obejmuje dowolne rozszerzenie. Gdy rozszerzenie Trigger Email jest uruchamiane z emulatorami lokalnymi, automatycznie korzysta z emulatorów Cloud Firestore i Cloud Functions.

Aby ocenić rozszerzenie lokalnie:

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

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

    Uruchomienie powyższego polecenia spowoduje wyświetlenie prośby o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-send-email i zapisanie konfiguracji w manifeście, ale nie wdroży konfiguracji w projekcie. Więcej informacji znajdziesz w artykule Zarządzanie konfiguracją rozszerzeń za pomocą manifestów.

  2. Uruchom Local Emulator Suite w zwykły sposób.

    firebase emulators:start

Pakiet emulatorów lokalnych pobier101e teraz kod źródłowy tego rozszerzenia do katalogu ~/.cache/firebase/extensions za pomocą instancji rozszerzenia firestore-send-email wymienionej w your manifest, the Local Emulator Suite. Po pobraniu źródeł Local Emulator Suite uruchomi się i będziesz mieć możliwość wywołania dowolnej funkcji wywoływanej w tle rozszerzenia oraz połączenia aplikacji z Local Emulator Suite, aby przetestować ich integrację z aplikacją.

Możesz użyć Emulator Suite UI, aby dodać dane do kolekcji dokumentów e-maila i skonfigurować inne zasoby backendu wymagane przez rozszerzenie Trigger Email.

W przypadku środowisk testowych bez interakcji, takich jak procesy ciągłej integracji, możesz też napisać skrypt testowy do oceny rozszerzenia który między innymi wypełnia niezbędne dane Cloud Firestore i wywołuje funkcje. Następnie wywołasz Local Emulator Suite , aby wykonać skrypt testowy:

firebase emulators:exec my-test.sh

Czym różni się testowanie za pomocą emulatora Extensions od testowania w środowisku produkcyjnym?

Emulator Extensions umożliwia testowanie rozszerzeń w sposób, który jest bardzo podobny do środowiska produkcyjnego. Istnieją jednak pewne różnice w zachowaniu w środowisku produkcyjnym.

Cloud IAM

Pakiet emulatorów Firebase nie próbuje replikować ani respektować żadnych zachowań związanych z IAM. Emulatory przestrzegają podanych reguł zabezpieczeń Firebase, ale w sytuacjach, w których normalnie używany byłby IAM, na przykład do ustawienia konta usługi wywołującej Cloud Functions, a tym samym uprawnień, emulator nie jest konfigurowalny i będzie używać globalnie dostępnego konta na 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 żądania HTTP , reguły dołączenia do grupy odbiorców Eventarc dla rozszerzeń oraz funkcje wywoływane przez zdarzenia w tle w 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?