Zanim zaczniesz korzystać z Firebase Local Emulator Suite, utwórz projekt Firebase, skonfiguruj środowisko programistyczne i wybierz oraz zainstaluj pakiety SDK Firebase dla swojej platformy zgodnie z odpowiednimi tematami Pierwsze kroki z Firebase na temat platformy: Apple, Android lub internet.
Prototypowanie i testowanie
Local Emulator Suite zawiera kilka emulatorów produktów, zgodnie z opisem w tym artykule: Wprowadzenie do Firebase Local Emulator Suite. Możesz tworzyć prototypy i testować je za pomocą poszczególnych emulatorów lub ich kombinacji, w zależności od tego, których usług Firebase używasz w wersji produkcyjnej.
Aby przedstawić przepływ pracy w usłudze Local Emulator Suite, załóżmy, że: pracujesz nad aplikacją, która korzysta z typowej kombinacji produktów: Firebase i funkcje w Cloud Functions aktywowane przez operacje na tej bazie danych.
Po lokalnym zainicjowaniu projektu Firebase cykl programowania za pomocą Local Emulator Suite zwykle składa się z 3 kroków:
Twórz prototypy funkcji w interakcji z emulatorami i Emulator Suite UI.
Jeśli używasz emulatora bazy danych lub emulatora Cloud Functions, wykonać jednorazowy krok, by połączyć aplikację z emulatorami.
Automatyzuj testy za pomocą emulatorów i skryptów niestandardowych.
Inicjowanie projektu Firebase lokalnie
Upewnij się, że zainstalowałeś/zainstalowałaś interfejs wiersza poleceń lub zaktualizowałeś/zaktualizowałaś go do najnowszej wersji.
curl -sL firebase.tools | bash
Zainicjuj bieżący katalog roboczy jako projektu Firebase, postępując zgodnie z instrukcjami na ekranie, aby określić, że korzystasz z usługi. Cloud Functions i Cloud Firestore lub Realtime Database:
firebase init
Katalog projektu będzie teraz zawierać pliki konfiguracji Firebase,
Plik definicji Firebase Security Rules dla bazy danych, katalog functions
który zawiera kod Cloud Functions i inne pliki pomocnicze.
Interaktywne prototypowanie
Local Emulator Suite umożliwia szybkie tworzenie prototypów nowych funkcji, a wbudowany w pakiet Analytics to jeden z najbardziej przydatnych prototypów narzędzi. Działa to trochę tak, jakby konsola Firebase działała lokalnie.
Za pomocą Emulator Suite UI możesz iterować projekt bazy danych, testować różne przepływy danych z użyciem funkcji w chmurze, oceniać zmiany w regułach zabezpieczeń, sprawdzać dzienniki, aby potwierdzić działanie usług backendowych, i wykonywać inne czynności. Jeśli chcesz zacząć od nowa, po prostu wyczyść bazę danych i zacznij od nowa z nowym pomysłem na projekt.
Wszystkie te funkcje są dostępne po uruchomieniu Local Emulator Suite z:
firebase emulators:start
Aby utworzyć prototyp hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję w chmurze, aby modyfikować wpisy tekstowe w bazie danych, a także ją utworzyć i wypełnić w funkcji Emulator Suite UI, aby ją uruchomić.
- Utwórz funkcję w Cloud Functions aktywowaną przez zapisy w bazie danych, edytując plik
functions/index.js
w katalogu projektu. Zastąp w istniejącym pliku, używając poniższego fragmentu. Ta funkcja nasłuchuje zmian w dokumentach w kolekcjimessages
, konwertuje zawartość polaoriginal
dokumentu na wielkimi literami, a wynik jest zapisany w taguuppercase
tego dokumentu . - Uruchom Local Emulator Suite za pomocą
firebase emulators:start
Cloud Functions i baza danych po uruchomieniu są automatycznie skonfigurowane do współpracy. - Wyświetl interfejs w przeglądarce na stronie
http://localhost:4000
. Port 4000 jest domyślnym portem interfejsu użytkownika, ale sprawdź komunikaty terminala generowane przez interfejs wiersza poleceń Firebase. Zwróć uwagę na stan dostępnych emulatorów. W naszym przypadku uruchomione zostaną emulatory Cloud Functions i Cloud Firestore.
- W interfejsie Firestore > Dane, kliknij
Rozpocznij kolekcję i postępuj zgodnie z instrukcjami, aby utworzyć nowy dokument w
Kolekcja
messages
z nazwą polaoriginal
i wartościątest
To uruchamia naszą funkcję w chmurze. Zauważ, że wkrótce pojawi się nowe poleuppercase
wypełnione ciągiem znaków „TEST”.
- W Firestore > Prośby możesz sprawdzać żądania przesyłane do emulowana baza danych, w tym wszystkie wykonane oceny: Firebase Security Rules i spełnienie tych żądań.
- Sprawdź kartę Logi, aby sprawdzić, czy funkcja nie napotkała błędów. podczas aktualizowania bazy danych.
const functions = require('firebase-functions/v1'); 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 przechodzić między kodem funkcji w chmurze a interaktywnymi zmianami w bazie danych, aż uzyskasz pożądany przepływ danych, bez konieczności modyfikowania kodu dostępu do bazy danych w aplikacji, ponownego kompilowania i ponownego uruchamiania zestawów testów.
Łączenie aplikacji z emulatorami
Jeśli wykonasz dobre postępy w tworzeniu interaktywnych prototypów i zdecydujesz się projektu, możesz dodać do swojej aplikacji kod dostępu do bazy danych za pomocą dla odpowiedniego pakietu SDK. Aby sprawdzić, czy aplikacja działa prawidłowo, nadal będziesz używać karty bazy danych, a w przypadku funkcji – karty DziennikiEmulator Suite UI w Emulator Suite UI.
Pamiętaj, że Local Emulator Suite jest narzędziem dla programistów lokalnych. Zapisy do produkcyjnych baz danych nie będą aktywować funkcji, które są prototypowane lokalnie.
Aby przełączyć się na zapisywanie danych w aplikacji w bazie danych, musisz skierować klasy testowe lub konfigurację w aplikacji na Cloud Firestoreemulator.
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 firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 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);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
Automatyzowanie testów za pomocą skryptów niestandardowych
A teraz ostatni krok ogólnego przepływu pracy. Gdy prototyp funkcji w aplikacji będzie 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żesz uruchomić
używać emulatorów do uruchamiania testów skryptów i wyłączania emulatorów w ramach pojedynczej rozmowy przy użyciu
polecenie exec
:
firebase emulators:exec "./testdir/test.sh"
Poznaj szczegółowo poszczególne emulatory
Wiesz już, jak wygląda podstawowy przepływ pracy po stronie klienta. przejdź do szczegółów poszczególnych emulatorów w pakiecie Analytics, w tym aby używać ich do tworzenia aplikacji po stronie serwera:
- Dodaj emulator Authentication do przepływów pracy tworzenia prototypów
- Więcej informacji o funkcjach emulatora Realtime Database
- Więcej informacji o funkcjach emulatora Cloud Storage for Firebase
- Więcej informacji o funkcjach emulatora Cloud Firestore
- Łączenie aplikacji z emulatorem Cloud Functions
- Oceń Firebase Extensions przy minimalizacji kosztów rozliczeń za pomocą emulatora Extensions
Co dalej?
Przeczytaj tematy dotyczące konkretnych emulatorów, do których linki znajdują się powyżej. Następnie:
- Aby poznać szczegółowe instrukcje i wyselekcjonowane filmy, obejrzyj playlistę szkoleń na temat emulatorów Firebase.
- Zapoznaj się z zaawansowanymi zastosowaniami dotyczącymi testowania reguł zabezpieczeń i pakietu Firebase Test SDK: Test Security Rules (Cloud Firestore), Test Security Rules (Realtime Database) i Test Security Rules (Cloud Storage for Firebase).