Zanim zaczniesz korzystać z Firebase Local Emulator Suite, upewnij się, że utworzyłeś projekt Firebase, skonfigurowałeś swoje środowisko programistyczne oraz wybrałeś i zainstalowałeś Firebase SDK dla swojej platformy, zgodnie z tematami Pierwsze kroki z Firebase dla Twojej platformy: Apple , Android lub WWW .
Prototyp i test
Pakiet Local Emulator Suite zawiera kilka emulatorów produktów, zgodnie z opisem we wprowadzeniu do pakietu Firebase Local Emulator Suite . Możesz tworzyć prototypy i testować poszczególne emulatory, a także kombinacje emulatorów, według własnego uznania, odpowiadające produktom Firebase, których używasz w produkcji.

W tym temacie, aby wprowadzić przepływ pracy pakietu Local Emulator Suite, załóżmy, że pracujesz nad aplikacją, która korzysta z typowej kombinacji produktów: bazy danych Firebase i funkcji chmury wyzwalanych przez operacje na tej bazie danych.
Po lokalnym zainicjowaniu projektu Firebase cykl programowania przy użyciu pakietu Local Emulator Suite zazwyczaj składa się z trzech etapów:
Prototypy działają interaktywnie z emulatorami i interfejsem Emulator Suite.
Jeśli używasz emulatora bazy danych lub emulatora Cloud Functions, wykonaj jednorazową czynność, aby połączyć aplikację z emulatorami.
Zautomatyzuj swoje testy za pomocą emulatorów i niestandardowych skryptów.
Lokalnie zainicjuj projekt Firebase
Upewnij się, że instalujesz interfejs CLI lub aktualizujesz go 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 Realtime Database :
firebase init
Twój katalog projektu będzie teraz zawierał pliki konfiguracyjne Firebase, plik definicji reguł bezpieczeństwa Firebase dla bazy danych, katalog functions
zawierający kod funkcji w chmurze i inne pliki pomocnicze.
Prototypuj interaktywnie
Pakiet Local Emulator Suite został zaprojektowany tak, aby umożliwić szybkie prototypowanie nowych funkcji, a wbudowany interfejs użytkownika pakietu jest jednym z najbardziej użytecznych narzędzi do prototypowania. To trochę tak, jakby konsola Firebase działała lokalnie.
Korzystając z interfejsu użytkownika Emulator Suite, możesz iterować projekt bazy danych, wypróbowywać różne przepływy danych obejmujące funkcje chmury, oceniać zmiany reguł bezpieczeństwa, sprawdzać dzienniki, aby potwierdzić działanie 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.
To wszystko jest dostępne po uruchomieniu pakietu Local Emulator Suite z:
firebase emulators:start
Aby stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję chmury do modyfikowania wpisów tekstowych w bazie danych, a następnie utwórzmy i wypełnijmy tę bazę danych w interfejsie użytkownika Emulator Suite, aby ją uruchomić.
- Utwórz funkcję w chmurze wyzwalaną przez zapis bazy danych, edytując plik
functions/index.js
w katalogu projektu. Zastąp zawartość istniejącego pliku następującym fragmentem kodu. Ta funkcja nasłuchuje zmian w węzłach w hierarchiimessages
, konwertuje zawartośćoriginal
właściwości węzła na wielkie litery i zapisuje wynik we właściwościuppercase
liter tego węzła. - Uruchom pakiet Local Emulator Suite z
firebase emulators:start
. Uruchamiają się funkcje Cloud Functions i emulatory baz danych, które są automatycznie konfigurowane do współpracy. - Wyświetl interfejs użytkownika w przeglądarce pod
http://localhost:4000
. Domyślnym portem interfejsu użytkownika jest port 4000, ale sprawdź komunikaty terminala wysyłane przez Firebase CLI. Zwróć uwagę na stan dostępnych emulatorów. W naszym przypadku będą działać emulatory Cloud Functions i Realtime Database.
- W interfejsie użytkownika, na karcie Baza danych czasu rzeczywistego , użyj elementów sterujących edytora zawartości bazy danych, aby utworzyć zestaw węzłów z węzłem
messages
zawierającym węzełmessage1
, który z kolei zawiera węzeł z kluczem ustawionym naoriginal
i wartością ustawioną natest
. To uruchamia naszą funkcję chmury. Zauważ, że wkrótce pojawi się nowa właściwośćuppercase
, z wartościąTEST
.
- Sprawdź kartę Dzienniki , aby potwierdzić, że funkcja nie uruchomiła żadnych błędów podczas aktualizowania bazy danych.
const functions = require('firebase-functions'); exports.makeUppercase = functions.database.ref('/messages/{pushId}/original') .onCreate((snapshot, context) => { const original = snapshot.val(); console.log('Uppercasing', context.params.pushId, original); const uppercase = original.toUpperCase(); return snapshot.ref.parent.child('uppercase').set(uppercase); });
Możesz łatwo iterować między kodem funkcji chmury a edycjami interaktywnej bazy danych, aż uzyskasz pożądany przepływ danych, 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 poczynisz duże 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 zestawu SDK. Będziesz nadal używać karty bazy danych i, w przypadku funkcji, karty Dzienniki w interfejsie użytkownika Emulator Suite, aby potwierdzić, że zachowanie aplikacji jest prawidłowe.
Pamiętaj, że Local Emulator Suite to lokalne narzędzie programistyczne. Zapisy w twoich produkcyjnych bazach danych nie będą uruchamiać funkcji, które prototypujesz lokalnie.
Aby przełączyć się na zapisywanie przez aplikację w bazie danych, musisz wskazać klasy testowe lub konfigurację w aplikacji na emulator bazy danych czasu rzeczywistego.
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val database = Firebase.database database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseDatabase database = FirebaseDatabase.getInstance(); database.useEmulator("10.0.2.2", 9000);
Szybki
// In almost all cases the ns (namespace) is your project ID. let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")
Web version 9
import { getDatabase, connectDatabaseEmulator } from "firebase/database"; const db = getDatabase(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. connectDatabaseEmulator(db, "localhost", 9000); }
Web version 8
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("localhost", 9000); }
Zautomatyzuj swoje testy za pomocą niestandardowych skryptów
Teraz ostatni ogólny krok przepływu pracy. Po utworzeniu prototypu funkcji w aplikacji, która wygląda obiecująco na wszystkich platformach, możesz przystąpić do ostatecznej implementacji i testowania. W przypadku testów jednostkowych i przepływów pracy CI można uruchamiać emulatory, uruchamiać testy skryptowe i zamykać emulatory w jednym wywołaniu za pomocą polecenia exec
:
firebase emulators:exec "./testdir/test.sh"
Poznaj dokładniej poszczególne emulatory
Teraz, gdy już wiesz, jak wygląda podstawowy przepływ pracy po stronie klienta, możesz przejść do szczegółowych informacji 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ę więcej o funkcjach emulatora bazy danych czasu rzeczywistego
- Dowiedz się więcej o funkcjach emulatora Cloud Storage for Firebase
- Dowiedz się więcej o funkcjach emulatora Cloud Firestore
- Połącz swoją aplikację z emulatorem Cloud Functions
- Oceń rozszerzenia Firebase, minimalizując jednocześnie koszty rozliczeniowe dzięki emulatorowi rozszerzeń
Co następne?
Pamiętaj, aby przeczytać 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, postępuj zgodnie z listą odtwarzania szkoleniowych emulatorów Firebase .
- Zbadaj zaawansowane przypadki użycia obejmujące testowanie reguł bezpieczeństwa i zestaw Firebase Test SDK: Testuj reguły bezpieczeństwa (Cloud Firestore) , Testuj reguły bezpieczeństwa (baza danych czasu rzeczywistego) i Testuj reguły bezpieczeństwa (Cloud Storage dla Firebase) .