Zanim zaczniesz używać emulatora Extensions z aplikacją, upewnij się, że rozumiesz ogólny Firebase Local Emulator Suite przepływ pracy oraz że zainstalujesz i skonfigurujesz Local Emulator Suite i zapoznasz się z jego poleceniami interfejsu wiersza poleceń.
W tym przewodniku zakładamy też, że znasz Firebase Extensions i wiesz, jak używać ich w aplikacjach Firebase.
Do czego służy Extensions emulator?
Za pomocą Extensions emulatora możesz instalować rozszerzenia i nimi zarządzać w bezpiecznym środowisku lokalnym oraz lepiej poznawać ich możliwości, minimalizując jednocześnie koszty rozliczeń. Emulator uruchamia funkcje rozszerzenia lokalnie, 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 funkcje wywoływane przez Eventarc zaimplementowane w Cloud Functions w wersji 2.
Wybieranie projektu Firebase
Firebase Local Emulator Suite emuluje usługi dla jednego projektu Firebase.
Aby wybrać projekt, którego chcesz używać, przed uruchomieniem emulatorów wpisz w CLI polecenie
firebase use
w katalogu roboczym. Możesz też przekazać flagę --project
do każdego polecenia emulatora.
Local Emulator Suite obsługuje emulację prawdziwych projektów Firebase i projektów demonstracyjnych.
Typ projektu | Funkcje | Korzystanie z emulatorami |
---|---|---|
Real |
Prawdziwy projekt Firebase to projekt, który został utworzony i skonfigurowany (najprawdopodobniej w Firebasekonsoli). Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, zasobniki pamięci, funkcje 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 wszystkich 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.). |
Prezentacja |
Projekt demonstracyjny Firebase nie ma prawdziwej konfiguracji Firebase ani aktywnych zasobów. Dostęp do tych projektów uzyskuje się zwykle za pomocą ćwiczeń z programowania lub innych samouczków. Identyfikatory projektów demonstracyjnych mają prefiks |
Podczas pracy z demonstracyjnymi projektami Firebase aplikacje i kod wchodzą w interakcje tylko z emulatorami. Jeśli aplikacja spróbuje wejść w interakcję z zasobem, dla którego nie działa emulator, kod nie zadziała. |
Zalecamy korzystanie w miarę możliwości 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 tworzenia projektu Firebase.
- Większe bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła zasoby nieemulowane (produkcyjne), nie ma możliwości zmiany danych, wykorzystania zasobów ani naliczenia opłat.
- Lepsza obsługa offline, ponieważ nie musisz uzyskiwać dostępu do internetu, aby pobrać konfigurację pakietu SDK.
Instalowanie i ocenianie rozszerzenia
Sprawdzenie, czy rozszerzenie spełnia Twoje potrzeby, za pomocą Extensionsemulatora jest proste.
Załóżmy, że interesuje Cię rozszerzenie e-maila wywołanegofirestore-send-email
, ale poniższy proces obejmuje każde rozszerzenie. Gdy funkcja Trigger Email jest uruchamiana z lokalnymi emulatorami, automatycznie korzysta z emulatorów Cloud Firestore i Cloud Functions.
Aby ocenić rozszerzenie lokalnie:
Dodaj rozszerzenie do pliku manifestu rozszerzeń lokalnych. 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 pliku manifestu, ale nie spowoduje wdrożenia konfiguracji w projekcie. Więcej informacji znajdziesz w artykule Zarządzanie konfiguracją rozszerzeń za pomocą plików manifestu.Rozpocznij Local Emulator Suite w zwykły sposób.
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ł rozpocznie się Local Emulator Suite i będziesz mieć możliwość wywoływania dowolnych funkcji rozszerzenia uruchamianych w tle oraz łączenia aplikacji z Local Emulator Suite w celu przetestowania ich integracji z aplikacją.
Możesz użyć Emulator Suite UI, aby dodać dane do kolekcji dokumentów e-mail i skonfigurować inne zasoby backendu wymagane przez rozszerzenie Trigger Email.
W przypadku nieinteraktywnych środowisk testowych, takich jak przepływy pracy ciągłej integracji, możesz też napisać skrypt testowy do oceny rozszerzenia, który m.in. wypełnia niezbędne dane Cloud Firestore i wywołuje funkcje. Następnie wywołaj Local Emulator Suite, aby uruchomić skrypt testowy:
firebase emulators:exec my-test.sh
Różnice między testowaniem za pomocą Extensions emulatora a środowiskiem produkcyjnym
Emulator Extensions umożliwia testowanie rozszerzeń w sposób bardzo zbliżony do środowiska produkcyjnego. Istnieją jednak pewne różnice w porównaniu z działaniem w środowisku produkcyjnym.
Cloud IAM
Pakiet emulatorów Firebase nie próbuje replikować ani uwzględniać żadnych zachowań związanych z IAM podczas działania. Emulatory są zgodne z podanymi regułami zabezpieczeń Firebase, ale w sytuacjach, w których zwykle używa się IAM, np. 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 lokalnego skryptu.
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 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 przez zdarzenia, musisz zainstalować rozszerzenie w testowym projekcie Firebase.
Co dalej?
- Zestaw wyselekcjonowanych filmów i szczegółowych instrukcji z przykładami znajdziesz na playliście szkoleń na temat emulatorów Firebase.