Zanim połączysz aplikację z emulatorem Realtime Database, sprawdź, czy poznasz ogólny przepływ pracy w Firebase Local Emulator Suite, oraz musisz zainstalować i skonfigurować Local Emulator Suite i zapoznaj się z poleceniami interfejsu wiersza poleceń.
Wybierz projekt Firebase
Funkcja Firebase Local Emulator Suite emuluje produkty z jednego projektu Firebase.
Aby wybrać projekt do użycia, przed uruchomieniem emulatorów uruchom interfejs wiersza poleceń
firebase use
w katalogu roboczym. Możesz też przejść
flagę --project
poszczególnych emulatorów
.
Local Emulator Suite obsługuje emulację prawdziwych projektów Firebase oraz projektów demograficznych.
Typ projektu | Funkcje | Używanie z emulatorami |
---|---|---|
Prawdziwe |
Prawdziwy projekt Firebase to projekt utworzony i skonfigurowany przez Ciebie (najprawdopodobniej za pomocą konsoli Firebase). Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, miejsce na dane zasobników, funkcji lub innych zasobów utworzonych dla danej usługi Firebase w projektach AI. |
Podczas pracy z prawdziwymi projektami Firebase możesz używać emulatorów dla lub wszystkich obsługiwanych usług. W przypadku usług, których nie emulujesz, aplikacje i kod będą interakcja z zasobem aktywnym (instancją bazy danych, pamięcią masową) zasobnik, funkcja itp.). |
Wersja demonstracyjna |
Projekt demonstracyjny Firebase nie ma rzeczywistej konfiguracji Firebase oraz brak aktywnych zasobów. Dostęp do tych projektów uzyskuje się zazwyczaj w ramach ćwiczeń z programowania lub innych samouczków. Identyfikatory projektów demonstracyjnych mają prefiks |
Podczas pracy z projektami demonstracyjnymi Firebase Twoje aplikacje i kod współdziałają tylko emulatory. Jeśli aplikacja próbuje wchodzić w interakcję z zasobem w przypadku których emulator nie jest uruchomiony, kod ten zakończy się niepowodzeniem. |
Zalecamy, aby w miarę możliwości korzystać 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 konieczności tworzenia Projekt Firebase
- Silniejsze bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowany (produkcyjnych), nie jest prawdopodobne, że nastąpi zmiana danych, jego użycia i rozliczeń
- lepsza obsługa offline, ponieważ nie trzeba łączyć się z internetem, pobierz konfigurację pakietu SDK.
Dostosuj aplikację do emulatorów
Platformy Android, Apple i internetowe pakiety SDK
Skonfiguruj konfigurację w aplikacji lub sprawdź zajęcia, aby korzystać z Realtime Database w następujący sposób.
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);
Swift
// In almost all cases the ns (namespace) is your project ID. let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")
Web
import { getDatabase, connectDatabaseEmulator } from "firebase/database"; const db = getDatabase(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. connectDatabaseEmulator(db, "127.0.0.1", 9000); }
Web
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("127.0.0.1", 9000); }
Aby przetestować funkcje w Cloud Functions aktywowane przez zdarzenia Bazy danych czasu rzeczywistego, nie jest wymagana dodatkowa konfiguracja za pomocą emulatora. Gdy emulatory Bazy danych czasu rzeczywistego i Cloud Functions są współdziałają ze sobą automatycznie.
Admin SDK s
Urządzenia Firebase Admin SDK automatycznie łączą się z emulatorem Realtime Database, gdy:
zmienna środowiskowa FIREBASE_DATABASE_EMULATOR_HOST
jest ustawiona:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
Jeśli Twój kod działa w ramach emulatora Cloud Functions, identyfikator projektu
, a także inne ustawienia, zostaną automatycznie ustawione podczas wywoływania usługi initializeApp
.
Jeśli chcesz, aby kod Admin SDK łączył się ze współdzielonym emulatorem działającym w
w innym środowisku, musisz podać ten sam identyfikator projektu, który ustawiasz za pomocą interfejsu wiersza poleceń Firebase.
Możesz przekazać identyfikator projektu bezpośrednio do initializeApp
lub ustawić
Zmienna środowiskowa GCLOUD_PROJECT
.
Pakiet SDK administratora Node.js
admin.initializeApp({ projectId: "your-project-id" });
Zmienna środowiskowa
export GCLOUD_PROJECT="your-project-id"
Czyszczenie bazy danych między testami
Aby wyczyścić Realtime Database między działaniami, możesz wyczyścić odniesienie do bazy danych. Możesz użyć tej metody jako alternatywy dla zamknięcia procesu emulatora.
Kotlin+KTX
// With a DatabaseReference, write null to clear the database. database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database. database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
import { getDatabase, ref, set } from "firebase/database"; // With a database Reference, write null to clear the database. const db = getDatabase(); set(ref(db), null);
Web
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
Kod powinien oczywiście czekać na potwierdzenie zakończenia lub niepowodzenia czyszczenia przy użyciu funkcji asynchronicznego obsługi zdarzeń na platformie.
Po zaimplementowaniu takiego kroku możesz utworzyć sekwencję testów i aktywować funkcje, mając pewność, że stare dane zostaną trwale usunięte między uruchomieniami i będziesz korzystać z nowej konfiguracji podstawowej.
Importowanie i eksportowanie danych
Baza danych i emulatory usługi Cloud Storage for Firebase umożliwiają eksportowanie danych z działającej instancji emulatora. Zdefiniuj bazowy zbiór danych do użycia testów jednostkowych lub przepływów pracy w trybie ciągłej integracji, a następnie je wyeksportować, aby je udostępnić. w zespole.
firebase emulators:export ./dir
Podczas uruchamiania emulatora zaimportuj dane podstawowe podczas testów.
firebase emulators:start --import=./dir
Możesz polecić emulatorowi eksportowanie danych po wyłączeniu, określając
eksportu lub po prostu za pomocą ścieżki przekazywanej do funkcji --import
flaga.
firebase emulators:start --import=./dir --export-on-exit
Te opcje importu i eksportu danych działają z
firebase emulators:exec
. Więcej informacji:
dokumentacja polecenia emulatora.
Wizualizacja aktywności związanej z regułami zabezpieczeń
Przy opracowaniu prototypu i pętli testowych możesz korzystać z narzędzi do wizualizacji. i raporty dostarczane przez Local Emulator Suite.
Wizualizacja ocen reguł
Dodając reguły zabezpieczeń do prototypu, możesz je debugować Narzędzia Local Emulator Suite.
Po przeprowadzeniu zestawu testów możesz uzyskać dostęp do raportów o zasięgu testów, które pokazują jak zostały ocenione poszczególne reguły. Aby otrzymywać te raporty, wyślij zapytanie do grupy w punkcie końcowym w emulatorze, gdy jest uruchomiony. W wersji dla przeglądarek użyj tego adresu URL:
http://localhost:9000/.inspect/coverage?ns=<database_name>
Reguły są dzielone na wyrażenia i podwyrażenia, najechanie kursorem myszy, aby uzyskać więcej informacji, w tym liczbę uruchomień i wartości . W przypadku nieprzetworzonej wersji JSON tych danych umieść w zapytanie:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
Co dalej?
- Wyselekcjonowany zestaw filmów i szczegółowe przykłady instrukcji znajdziesz na playliście szkoleniowej dotyczącej emulatorów Firebase.
- Zbadaj zaawansowane przypadki użycia obejmujące testowanie reguł zabezpieczeń i pakiet SDK Firebase Test SDK: testowanie reguł zabezpieczeń (baza danych czasu rzeczywistego).
- Ponieważ aktywowane funkcje są typową integracją z Realtime Database, poznaj więcej informacji o emulatorze Cloud Functions for Firebase znajdziesz na Uruchamianie funkcji lokalnie