Zanim zaczniesz korzystać z pakietu Firebase Local Emulator Suite, upewnij się, że utworzyłeś projekt Firebase, skonfigurujesz środowisko programistyczne oraz wybrałeś i zainstalowałeś pakiety SDK Firebase dla swojej platformy zgodnie z tematami Wprowadzenie do Firebase dla Twojej platformy: Apple , Android lub Internet .
Prototyp i test
Pakiet emulatorów lokalnych zawiera kilka emulatorów produktów, zgodnie z opisem we wprowadzeniu do pakietu emulatorów lokalnych Firebase . Możesz prototypować i testować za pomocą pojedynczych emulatorów, a także kombinacji emulatorów, według własnego uznania, odpowiednio do produktów Firebase, których używasz w produkcji.

W tym temacie, aby przedstawić przepływ pracy lokalnego pakietu emulatorów, załóżmy, że pracujesz nad aplikacją, która używa typowej kombinacji produktów: bazy danych Firebase i funkcji w chmurze wyzwalanych przez operacje na tej bazie danych.
Po lokalnym zainicjowaniu projektu Firebase cykl programistyczny przy użyciu lokalnego pakietu emulatorów będzie zwykle składał się z trzech kroków:
Prototype działa interaktywnie z emulatorami i interfejsem użytkownika pakietu Emulator Suite.
Jeśli używasz emulatora bazy danych lub emulatora Cloud Functions, wykonaj jednorazowy krok, aby połączyć aplikację z emulatorami.
Zautomatyzuj swoje testy za pomocą emulatorów i niestandardowych skryptów.
Zainicjuj lokalnie projekt Firebase
Upewnij się, że zainstalowałeś CLI lub zaktualizowałeś do najnowszej wersji .
curl -sL firebase.tools | bash
Jeśli jeszcze tego nie zrobiłeś, zainicjuj bieżący katalog roboczy jako projekt Firebase, postępując zgodnie z instrukcjami wyświetlanymi na ekranie, aby określić, że używasz Cloud Functions i Cloud Firestore lub Bazy danych czasu rzeczywistego :
firebase init
Twój katalog projektu będzie teraz zawierał pliki konfiguracyjne Firebase, plik definicji reguł zabezpieczeń Firebase dla bazy danych, katalog functions
zawierający kod funkcji w chmurze i inne pliki pomocnicze.
Prototypuj interaktywnie
Pakiet lokalnych emulatorów został zaprojektowany, aby umożliwić szybkie prototypowanie nowych funkcji, a wbudowany interfejs użytkownika pakietu jest jednym z najbardziej przydatnych narzędzi do prototypowania. To trochę tak, jakby konsola Firebase działała lokalnie.
Korzystając z interfejsu użytkownika pakietu Emulator Suite, możesz iterować projekt bazy danych, wypróbowywać różne przepływy danych obejmujące funkcje w chmurze, oceniać zmiany reguł zabezpieczeń, sprawdzać dzienniki, aby potwierdzić wydajność usług zaplecza i nie tylko. Następnie, jeśli chcesz zacząć od nowa, po prostu wyczyść bazę danych i zacznij od nowa z nowym pomysłem na projekt.
Wszystko to jest dostępne po uruchomieniu lokalnego pakietu emulatorów za pomocą:
firebase emulators:start
Aby stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję chmury, aby zmodyfikować wpisy tekstowe w bazie danych, a następnie utwórzmy i wypełnijmy tę bazę danych w interfejsie użytkownika pakietu emulatorów, aby ją uruchomić.
- Utwórz funkcję w chmurze wyzwalaną przez zapisy bazy danych, edytując plik
functions/index.js
w katalogu projektu. Zastąp zawartość istniejącego pliku następującym fragmentem. Ta funkcja nasłuchuje zmian w dokumentach w kolekcjimessages
, konwertuje zawartośćoriginal
pola dokumentu na wielkie litery i przechowuje wynik w polu tego dokumentu zawierającymuppercase
. - Uruchom pakiet emulatorów lokalnych z
firebase emulators:start
. Uruchomią się funkcje Cloud Functions i emulatory bazy danych, automatycznie skonfigurowane do współpracy. - Wyświetl interfejs użytkownika w przeglądarce pod
http://localhost:4000
. Port 4000 jest domyślnym interfejsem użytkownika, ale sprawdź komunikaty terminala wyprowadzane przez interfejs Firebase CLI. Zwróć uwagę na stan dostępnych emulatorów. W naszym przypadku będą działać emulatory Cloud Functions i Cloud Firestore.
- W interfejsie użytkownika na karcie Firestore na karcie podrzędnej Dane kliknij opcję Rozpocznij zbieranie i postępuj zgodnie z monitami, aby utworzyć nowy dokument w kolekcji
messages
z nazwą polaoriginal
itest
wartości . To uruchamia naszą funkcję chmury. Zauważ, że wkrótce pojawi się nowe poleuppercase
, wypełnione ciągiem „TEST”.
- Na karcie Firestore > Żądania sprawdź żądania wysyłane do emulowanej bazy danych, w tym wszystkie oceny reguł zabezpieczeń Firebase wykonane w ramach realizacji tych żądań.
- Sprawdź kartę Dzienniki , aby upewnić się, że funkcja nie napotkała błędów podczas aktualizacji bazy danych.
const functions = require('firebase-functions'); exports.makeUppercase = functions.firestore.document('/messages/{documentId}') .onCreate((snap, context) => { const original = snap.data().original; console.log('Uppercasing', context.params.documentId, original); const uppercase = original.toUpperCase(); return snap.ref.set({uppercase}, {merge: true}); });
Możesz łatwo iterować między kodem funkcji w chmurze a interaktywnymi edycjami bazy danych, aż uzyskasz przepływ danych, którego szukasz, bez dotykania kodu dostępu do bazy danych w aplikacji, ponownej kompilacji i ponownego uruchamiania zestawów testów.
Połącz swoją aplikację z emulatorami
Gdy zrobisz dobre postępy w interaktywnym prototypowaniu i zdecydujesz się na projekt, będziesz gotowy do dodania kodu dostępu do bazy danych do swojej aplikacji przy użyciu odpowiedniego pakietu SDK. Będziesz nadal korzystać z karty bazy danych i, w przypadku funkcji, karty Dzienniki w interfejsie użytkownika pakietu emulatorów, aby potwierdzić, że zachowanie aplikacji jest prawidłowe.
Pamiętaj, że Local Emulator Suite to lokalne narzędzie programistyczne. Zapisy w produkcyjnych bazach danych nie będą wyzwalać funkcji, które tworzysz lokalnie.
Aby przełączyć się na wykonywanie przez aplikację zapisów w bazie danych, musisz wskazać swoje klasy testowe lub konfigurację w aplikacji w emulatorze Cloud Firestore.
Android
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Szybki
let settings = Firestore.firestore().settings settings.host = "localhost:8080" settings.isPersistenceEnabled = false settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web version 9
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, 'localhost', 8080);
Web version 8
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("localhost", 8080); }
Zautomatyzuj swoje testy za pomocą niestandardowych skryptów
Przejdźmy teraz do ostatniego ogólnego etapu przepływu pracy. Po stworzeniu prototypu funkcji w aplikacji, która wygląda obiecująco na wszystkich platformach, możesz przejść do ostatecznej implementacji i testowania. W przypadku testów jednostkowych i przepływów pracy CI można uruchamiać emulatory, uruchamiać testy skryptowe i wyłączać emulatory w jednym wywołaniu za pomocą polecenia exec
:
firebase emulators:exec "./testdir/test.sh"
Poznaj dokładniej poszczególne emulatory
Teraz, gdy wiesz już, jak wygląda podstawowy przepływ pracy po stronie klienta, możesz kontynuować szczegółowe informacje o poszczególnych emulatorach w pakiecie, w tym o tym, jak ich używać do tworzenia aplikacji po stronie serwera:
- Dodaj emulator uwierzytelniania do przepływów pracy prototypowania
- Dowiedz się szczegółowo o funkcjach emulatora bazy danych czasu rzeczywistego
- Dowiedz się więcej o funkcjach emulatora Cloud Storage
- Dowiedz się więcej o funkcjach emulatora Cloud Firestore
- Połącz swoją aplikację z emulatorem Cloud Functions
- Oceniaj rozszerzenia Firebase, jednocześnie minimalizując koszty rozliczeń za pomocą emulatora rozszerzeń
Co następne?
Koniecznie przeczytaj tematy związane z określonymi emulatorami, do których linki znajdują się powyżej. Następnie:
- Aby zapoznać się z wyselekcjonowanym zestawem filmów i szczegółowymi przykładami instrukcji, skorzystaj z playlisty szkoleniowej na temat emulatorów Firebase .
- Zbadaj zaawansowane przypadki użycia obejmujące testowanie reguł bezpieczeństwa i testowy pakiet SDK Firebase: Testuj reguły bezpieczeństwa (Cloud Firestore) , Testuj reguły bezpieczeństwa (baza danych czasu rzeczywistego) i Testuj reguły bezpieczeństwa (Cloud Storage) .