Ocena rozszerzeń za pomocą emulatora rozszerzeń

Zanim zaczniesz używać emulatora Extensions w aplikacji, upewnij się, że rozumiesz ogólny proces korzystania z Firebase Local Emulator Suite workflow, oraz że zainstalujesz i skonfigurujesz pakiet 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 rozliczeniowe. Emulator uruchamia lokalnie funkcje rozszerzenia, w tym funkcje wywoływane przez zdarzenia w tle, korzystając z emulatorów Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication i Pub/Sub, oraz funkcji wywoływanych przez Eventarc zaimplementowanych w Cloud Functions w wersji 2.

Wybierz projekt w Firebase

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

Aby wybrać projekt, którego chcesz używać, przed uruchomieniem emulatorów w interfejsie 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ę prawdziwych projektów Firebase i demonstracyjnych projektów.

Typ projektu Funkcje Użycie z emulatorami
Prawdziwy

Prawdziwy projekt w Firebase to projekt utworzony i skonfigurowany (najprawdopodobniej przez konsolę Firebase).

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

Podczas pracy z prawdziwymi projektami Firebase możesz uruchamiać emulatory wszystkich obsługiwanych usług.

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

Demonstracyjny

Demonstracyjny projekt w Firebase nie ma prawdziwej konfiguracji Firebase ani zasobów na żywo. Dostęp do tych projektów jest zwykle uzyskiwany za pomocą codelabów 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.

Jeśli to możliwe, zalecamy używanie 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 w Firebase.
  • Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowane (produkcyjne) zasoby, nie będzie możliwości zmiany danych, użycia ani 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 pobierze kod źródłowy tego rozszerzenia do katalogu ~/.cache/firebase/extensions, używając instancji rozszerzenia firestore-send-email wymienionej w manifeście.Local Emulator Suite Po pobraniu źródeł pakiet emulatorów lokalnych uruchomi się i będziesz mieć możliwość wywołania dowolnej funkcji wywoływanej w tle rozszerzenia oraz połączenia aplikacji z pakietem emulatorów lokalnych, aby przetestować ich integrację z aplikacją.Local Emulator SuiteLocal Emulator Suite

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

Alternatywnie, w przypadku środowisk testowych bez interakcji, takich jak procesy ciągłej integracji, możesz napisać scenariusz testowania 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ć scenariusz testowania:

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 zbliżony do środowiska produkcyjnego. Istnieją jednak pewne różnice w zachowaniu w porównaniu ze środowiskiem 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żywane byłoby 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ć konta dostępnego globalnie 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, aktywatory zdarzeń niestandardowych 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 w Firebase.

Co dalej?