Zanim zaczniesz korzystać z Firebase Local Emulator Suite, upewnij się, że masz utworzone projekt Firebase, skonfiguruj środowisko programistyczne i wybierz zainstalowane pakiety SDK Firebase dla Twojej platformy zgodnie z instrukcjami dla początkujących tematy Firebase dla Twojej 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 prototypować i testować za pomocą poszczególnych emulatorów oraz kombinacji emulatory, które według Ciebie odpowiadają usługom Firebase, których używasz. w produkcji.
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:
Prototypowe funkcje są interaktywne dzięki emulatorom i Emulator Suite UI.
Jeśli używasz emulatora bazy danych lub emulatora Cloud Functions, wykonać jednorazowy krok, by połączyć aplikację z emulatorami.
Zautomatyzuj testy za pomocą emulatorów i niestandardowych skryptów.
Inicjowanie projektu Firebase lokalnie
Pamiętaj, aby zainstalować interfejs wiersza poleceń lub zaktualizować ją 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żna iterować projekt bazy danych, różne przepływy danych obejmujące funkcje w Cloud Functions, oceniać zmiany reguł zabezpieczeń sprawdzać logi, aby potwierdzić wydajność usług backendu itd. Następnie: aby zacząć od początku, 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 stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję w Cloud Functions. modyfikowanie wpisów tekstowych w bazie danych oraz tworzenie i zapełnianie tej bazy danych w Emulator Suite UI, aby go aktywować.
- Utwórz funkcję w Cloud Functions aktywowaną przez zapisy w bazie danych, edytując
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 dla interfejsu użytkownika, ale sprawdź wyjście komunikatów terminala przez interfejsu 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
Spowoduje to aktywowanie funkcji w Cloud Functions. Zauważ, że nowy Wkrótce pojawi się poleuppercase
z 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 powtarzać kod funkcji w Cloud Functions za pomocą funkcji interaktywnych zmian w bazie danych, aż do uzyskania odpowiedniego przepływu danych, bez naruszania kodu dostępu do bazy danych w aplikacji, ponowne kompilowanie i ponowne uruchamianie zestawów testowych.
Łą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. W dalszym ciągu będziesz korzystać z karty Baza danych, a w przypadku funkcji Karta Dzienniki w Emulator Suite UI, aby potwierdzić działanie aplikacji jest poprawne.
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 przejść na zapisywanie przez aplikację zapisów w bazie danych, potrzebujesz aby wskazać zajęcia testowe lub konfigurację w aplikacji na stronie Cloud Firestore za pomocą emulatora.
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. Po utworzeniu prototypu funkcji
i wygląda obiecująco na wszystkich platformach,
wdrażaniem i testowaniem. 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"
Więcej informacji na temat poszczególnych emulatorów
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ń działanie Firebase Extensions i minimalizuj koszty dzięki emulatorowi Extensions
Co dalej?
Zapoznaj się z tematami związanymi z konkretnymi emulatorami, do których linki znajdziesz powyżej. Następnie:
- Wyselekcjonowany zestaw filmów i szczegółowe przykłady instrukcji znajdziesz na playliście szkoleniowej dotyczącej emulatorów Firebase.
- Badanie zaawansowanych przypadków użycia obejmujących testowanie reguł zabezpieczeń Pakiet SDK Firebase Test: Testowanie reguł zabezpieczeń (Cloud Firestore) , Testowanie reguł zabezpieczeń (Realtime Database) i Testowanie reguł zabezpieczeń (Cloud Storage for Firebase).