Ocena rozszerzeń za pomocą emulatora rozszerzeń

Zanim użyjesz w aplikacji emulatora rozszerzeń, upewnij się, że znasz cały przepływ pracy w Pakiecie emulatorów lokalnych Firebase oraz że zainstalujesz i skonfigurujesz Pakiet emulatorów lokalnych oraz że zapoznasz się z poleceniami interfejsu wiersza poleceń.

W tym przewodniku przyjęto również założenie, że znasz rozszerzenia Firebase i wiesz, jak używać ich w aplikacjach Firebase.

Co mogę zrobić za pomocą emulatora rozszerzeń?

Dzięki emulatorowi rozszerzeń możesz instalować rozszerzenia i zarządzać nimi w bezpiecznym środowisku lokalnym, a także lepiej poznawać ich możliwości, minimalizując przy tym koszty rozliczeń. Emulator uruchamia lokalnie funkcje rozszerzenia, w tym funkcje aktywowane w tle za pomocą emulatorów Cloud Firestore, Bazy danych czasu rzeczywistego, Cloud Storage dla Firebase, Uwierzytelniania i Pub/Sub oraz funkcji wywoływanych przez Eventarc zaimplementowane w Cloud Functions w wersji 2.

Wybierz projekt Firebase

Pakiet emulatorów lokalnych Firebase emuluje usługi związane z jednym projektem Firebase.

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

Pakiet emulatorów lokalnych obsługuje emulację prawdziwych projektów Firebase i projektów prezentacyjnych.

Typ projektu Funkcje Używanie z emulatorami
Prawdziwe

Prawdziwy projekt Firebase to projekt utworzony i skonfigurowany przez Ciebie (najprawdopodobniej w konsoli Firebase).

Rzeczywiste projekty mają aktywne zasoby, takie jak instancje bazy danych, zasobniki na dane, funkcje lub inne zasoby skonfigurowane dla danego projektu Firebase.

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

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

Demonstracyjny

Projekt demonstracyjny Firebase nie ma rzeczywistej konfiguracji Firebase ani aktywnych zasobów. Dostęp do tych projektów uzyskuje się zwykle w ramach ćwiczeń z programowania lub innych samouczków.

Identyfikatory projektów demonstracyjnych mają prefiks demo-.

Jeśli pracujesz w projektach demonstracyjnych Firebase, Twoje aplikacje i kod wchodzą w interakcję tylko z emulatorami. Jeśli aplikacja spróbuje wejść w interakcję z zasobem, dla którego emulator nie jest uruchomiony, ten kod zakończy się niepowodzeniem.

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

  • Łatwiejsza konfiguracja, ponieważ emulatory można uruchamiać bez konieczności 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
  • Lepsza obsługa offline, ponieważ nie musisz łączyć się z internetem, aby pobrać konfigurację pakietu SDK.

Instalowanie i ocenianie rozszerzenia

Ocena, czy dane rozszerzenie spełnia Twoje potrzeby, jest proste za pomocą emulatora rozszerzeń.

Załóżmy, że interesuje Cię rozszerzenie e-maila aktywującego (firestore-send-email), ale ten proces dotyczy każdego rozszerzenia. W przypadku uruchomienia z użyciem emulatorów lokalnych poczta e-mail aktywująca będzie automatycznie korzystać z emulatorów Cloud Firestore i Cloud Functions.

Aby ocenić rozszerzenie lokalnie:

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

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

    Po uruchomieniu powyższego polecenia wyświetli się prośba o skonfigurowanie najnowszej wersji rozszerzenia firebase/firestore-send-email i zapisanie konfiguracji w pliku manifestu, ale nie wdrożysz konfiguracji w projekcie. Więcej informacji znajdziesz w artykule Zarządzanie konfiguracją rozszerzeń za pomocą plików manifestu.

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

    firebase emulators:start

Teraz za pomocą wystąpienia rozszerzenia firestore-send-email wymienionego w pliku manifestu Pakiet emulatorów lokalnych pobierze kod źródłowy tego rozszerzenia do aplikacji ~/.cache/firebase/extensions. Po pobraniu pakietów emulatorów lokalnych uruchomi się pakiet emulatorów lokalnych, na którym będzie można uruchamiać dowolne z tych funkcji wyzwalanych w tle oraz łączyć aplikację z Pakietem emulatorów lokalnych, aby przetestować ich integrację z aplikacją.

Za pomocą interfejsu pakietu emulatorów możesz dodawać dane do kolekcji dokumentów e-mail i konfigurować inne zasoby backendu zgodnie z wymaganiami rozszerzenia E-mail aktywującego.

W przypadku nieinteraktywnych środowisk testowych, takich jak przepływy pracy ciągłej integracji, możesz też napisać skrypt testowy, by ocenić rozszerzenie, które między innymi wypełni niezbędne dane Cloud Firestore oraz aktywuje funkcje. Następnie wywołasz Pakiet emulatorów lokalnych, 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 dopasowany do środowiska produkcyjnego. Występują jednak pewne różnice w stosunku do zachowania produkcyjnego.

Cloud IAM

Pakiet emulatorów Firebase nie próbuje replikować ani nie przestrzegać żadnych działań związanych z uprawnieniami dotyczącymi uruchamiania. Emulatory przestrzegają podanych reguł zabezpieczeń Firebase, ale w sytuacjach, w których uprawnienia są zwykle używane, np. do skonfigurowania konta usługi Cloud Functions, a zatem uprawnień, emulatora nie można skonfigurować i używa on konta dostępnego globalnie na komputerze dewelopera, podobnie jak w przypadku bezpośredniego uruchomienia skryptu lokalnego.

Ograniczenie typu wyzwalacza

Obecnie Pakiet emulatorów lokalnych Firebase obsługuje tylko funkcje wywoływane żądaniami HTTP, aktywatory zdarzeń niestandardowych Eventarc w przypadku rozszerzeń oraz funkcje wywoływane przez zdarzenia w tle w Cloud Firestore, Bazie danych czasu rzeczywistego, Cloud Storage dla Firebase, Uwierzytelnianiem i Pub/Sub. Aby ocenić rozszerzenia, które korzystają z innych typów wywoływanych funkcji, musisz zainstalować rozszerzenie w testowym projekcie Firebase.

Co dalej?