Erweiterungen mit dem Erweiterungsemulator bewerten

Bevor Sie den Extensions Emulator mit Ihrer App verwenden, sollten Sie sich mit dem allgemeinen Firebase Local Emulator Suite Workflow vertraut machen. Außerdem müssen Sie die Local Emulator Suite installieren und konfigurieren und die zugehörigen CLI-Befehle kennen.

In dieser Anleitung wird auch davon ausgegangen, dass Sie mit Firebase Extensions und ihrer Verwendung in Ihren Firebase-Apps vertraut sind.

Was kann ich mit dem Extensions Emulator tun?

Mit dem Extensions Emulator können Sie Erweiterungen in einer sicheren lokalen Umgebung installieren und ihre Funktionen besser verstehen. Gleichzeitig können Sie die Abrechnungskosten minimieren. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich durch Hintergrundereignisse ausgelöster Funktionen, die die Emulatoren für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub verwenden, sowie Eventarc-ausgelöster Funktionen, die in Cloud Functions (2. Generation) implementiert sind.

Firebase-Projekt auswählen

Die Firebase Local Emulator Suite emuliert Produkte für ein einzelnes Firebase-Projekt.

Wenn Sie das zu verwendende Projekt auswählen möchten, führen Sie vor dem Starten der Emulatoren in der CLI im Arbeitsverzeichnis firebase use aus. Alternativ können Sie das Flag an jeden Emulator Befehl übergeben.--project

Local Emulator Suite unterstützt die Emulation von echten Firebase-Projekten und Demoprojekten.

Projekttyp Funktionen Mit Emulatoren verwenden
Echt

Ein echtes Firebase-Projekt ist ein Projekt, das Sie erstellt und konfiguriert haben (wahrscheinlich über die Firebase Konsole).

Echte Projekte haben Live-Ressourcen wie Datenbankinstanzen, Storage Buckets, Funktionen oder andere Ressourcen, die Sie für dieses Firebase Projekt eingerichtet haben.

Wenn Sie mit echten Firebase-Projekten arbeiten, können Sie Emulatoren für alle oder alle unterstützten Produkte ausführen.

Für alle Produkte, die Sie nicht emulieren, interagieren Ihre Apps und Ihr Code mit der Live-Ressource (Datenbankinstanz, Storage-Bucket, Funktion usw.).

Demo

Ein Firebase-Demoprojekt hat keine echte Firebase-Konfiguration und keine Live-Ressourcen. Auf diese Projekte wird in der Regel über Codelabs oder andere Anleitungen zugegriffen.

Projekt-IDs für Demoprojekte haben das demo- Präfix.

Wenn Sie mit Firebase-Demoprojekten arbeiten, interagieren Ihre Apps und Ihr Code mit Emulatoren nur. Wenn Ihre App versucht, mit einer Ressource für die kein Emulator ausgeführt wird, zu interagieren, schlägt dieser Code fehl.

Wir empfehlen, Demoprojekte nach Möglichkeit zu verwenden. Dies sind die wichtigsten Vorteile:

  • Einfachere Einrichtung, da Sie die Emulatoren ausführen können, ohne ein Firebase-Projekt erstellen zu müssen
  • Höhere Sicherheit, da es keine Möglichkeit gibt, dass sich Daten ändern oder Kosten für die Nutzung entstehen, wenn Ihr Code versehentlich nicht emulierte (Produktions-)Ressourcen aufruft
  • Bessere Offlineunterstützung, da Sie nicht auf das Internet zugreifen müssen, um Ihre SDK-Konfiguration herunterzuladen.

Erweiterung installieren und testen

Mit dem Extensions Emulator können Sie ganz einfach testen, ob eine Erweiterung Ihren Anforderungen entspricht.

Nehmen wir an, Sie interessieren sich für die Erweiterung „Trigger Email“ (firestore-send-email) , Der folgende Workflow gilt jedoch für jede Erweiterung. Wenn „Trigger Email“ mit lokalen Emulatoren ausgeführt wird, werden automatisch die Cloud Firestore und Cloud Functions Emulatoren verwendet.

So testen Sie eine Erweiterung lokal:

  1. Fügen Sie die Erweiterung dem lokalen Erweiterungsmanifest hinzu. Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen.

    firebase ext:install --local firebase/firestore-send-email

    Wenn Sie den oben genannten Befehl ausführen, werden Sie aufgefordert, die neueste Version der firebase/firestore-send-email Erweiterung zu konfigurieren und die Konfiguration in das Manifest zu speichern. Die Konfiguration wird jedoch nicht in Ihrem Projekt bereitgestellt. Weitere Informationen finden Sie unter Erweiterungskonfigurationen mit Manifesten verwalten

  2. Starten Sie die Local Emulator Suite wie gewohnt.

    firebase emulators:start

Nun lädt die Local Emulator Suite anhand der im Manifest aufgeführten Erweiterungsinstanz firestore-send-email den Quellcode dieser Erweiterung in ~/.cache/firebase/extensions herunter. Sobald die Quellen heruntergeladen wurden, wird die Local Emulator Suite gestartet und Sie können alle durch Hintergrundereignisse ausgelösten Funktionen der Erweiterung auslösen und Ihre App mit der Local Emulator Suite verbinden, um die Integration in Ihre App zu testen.

Sie können Emulator Suite UI verwenden, um der Sammlung von E-Mail-Dokumenten Daten hinzuzufügen und andere Backend-Ressourcen einzurichten, die für die Erweiterung „Trigger Email“ erforderlich sind.

Alternativ können Sie für nicht interaktive Testumgebungen wie Continuous Integration-Workflows ein Testskript zum Testen der Erweiterung schreiben, das unter anderem die erforderlichen Cloud Firestore Daten enthält und Funktionen auslöst. Anschließend rufen Sie die Local Emulator Suite auf, um Ihr Testskript auszuführen:

firebase emulators:exec my-test.sh

Unterschiede zwischen Tests mit dem Extensions Emulator und der Produktion

Mit dem Extensions Emulator können Sie Erweiterungen so testen, dass sie der Produktionsumgebung sehr nahe kommen. Es gibt jedoch einige Unterschiede zum Produktionsverhalten.

Cloud IAM

Die Firebase Emulator Suite versucht nicht, das IAM-bezogene Verhalten für die Ausführung zu replizieren oder zu berücksichtigen. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheits Regeln. In Situationen, in denen normalerweise IAM verwendet würde, z. B. um das aufrufende Dienstkonto für Cloud Functions und damit Berechtigungen festzulegen, ist der Emulator nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer. Dies ähnelt dem direkten Ausführen eines lokalen Skripts.

Einschränkung des Auslösertyps

Derzeit unterstützt die Firebase Local Emulator Suite nur durch HTTP-Anfragen ausgelöste Funktionen, Eventarc-Trigger für benutzerdefinierte Ereignisse für Erweiterungen und durch Hintergrundereignisse ausgelöste Funktionen für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub. Wenn Sie Erweiterungen testen möchten, die andere Arten von ausgelösten Funktionen verwenden, müssen Sie die Erweiterung in einem Firebase-Testprojekt installieren.

Und jetzt?