Erweiterungen mit dem Erweiterungsemulator bewerten

Bevor Sie den Extensions-Emulator mit Ihrer App verwenden, sollten Sie sich mit dem Firebase Local Emulator Suite-Workflow vertraut machen und Local Emulator Suite installieren und konfigurieren sowie die Befehle der Befehlszeile prüfen.

Außerdem wird davon ausgegangen, dass Sie mit Firebase Extensions und der 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 verwalten, ihre Funktionen besser kennenlernen und gleichzeitig die Abrechnungskosten minimieren. Der Emulator führt die Funktionen Ihrer Erweiterung lokal aus, einschließlich ereignisgesteuerter Funktionen im Hintergrund mit den Emulatoren für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub sowie Eventarc-Trigger-Funktionen, die in Cloud Functions v2 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 Befehlszeile firebase use in Ihrem Arbeitsverzeichnis aus. Alternativ können Sie das Flag --project an jeden Emulatorbefehl übergeben.

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

Projekttyp Funktionen Mit Emulatoren verwenden
Real

Ein echtes Firebase-Projekt ist ein Projekt, das Sie erstellt und konfiguriert haben, höchstwahrscheinlich über die Firebase Console.

Echte Projekte haben Liveressourcen wie Datenbankinstanzen, Speicher-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 eines oder alle unterstützten Produkte ausführen.

Bei Produkten, die Sie nicht emulieren, interagieren Ihre Apps und Ihr Code mit der Live-Ressource (Datenbankinstanz, Speicher-Bucket, Funktion usw.).

Demo

Ein Demo-Firebase-Projekt hat keine echte Firebase-Konfiguration und keine Liveressourcen. Normalerweise wird über Codelabs oder andere Tutorials auf diese Projekte zugegriffen.

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

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

Wir empfehlen, nach Möglichkeit Demoprojekte zu verwenden. Die wichtigsten Vorteile:

  • Einfachere Einrichtung, da Sie die Emulatoren ausführen können, ohne ein Firebase-Projekt zu erstellen
  • Höhere Sicherheit, da bei versehentlichem Aufruf nicht emulierter (Produktions-)Ressourcen durch Ihren Code keine Daten geändert werden und es keine Nutzung und Abrechnung gibt
  • Bessere Offlineunterstützung, da kein Zugriff auf das Internet erforderlich ist, um die SDK-Konfiguration herunterzuladen.

Erweiterung installieren und bewerten

Mit dem Extensions-Emulator können Sie ganz einfach prüfen, ob eine Erweiterung Ihren Anforderungen entspricht.

Angenommen, Sie interessieren sich für die Erweiterung „Trigger-E-Mail“ (firestore-send-email). Der folgende Workflow gilt jedoch für alle Erweiterungen. Wenn Sie Trigger Email mit lokalen Emulatoren ausführen, werden automatisch die Cloud Firestore- und Cloud Functions-Emulatoren verwendet.

So bewerten Sie eine Erweiterung lokal:

  1. Fügen Sie die Erweiterung dem Manifest für lokale Erweiterungen hinzu. Ein Erweiterungsmanifest ist eine Liste von Erweiterungsinstanzen und ihren Konfigurationen.

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

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

  2. Starten Sie die Local Emulator Suite wie gewohnt.

    firebase emulators:start

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

Mit Emulator Suite UI können Sie der Sammlung „E-Mail-Dokumente“ Daten hinzufügen und andere Backend-Ressourcen einrichten, wie es von der Trigger-E-Mail-Erweiterung gefordert wird.

Für nicht interaktive Testumgebungen wie kontinuierliche Integrationsworkflows können Sie alternativ ein Testskript zum Bewerten der Erweiterung schreiben, das unter anderem die erforderlichen Cloud Firestore-Daten einfügt und Funktionen auslöst. Sie würden dann Local Emulator Suite aufrufen, um das Testscript 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 möglichst nahekommen. Es gibt jedoch einige Unterschiede zum Produktionsverhalten.

Cloud IAM

Die Firebase Emulator Suite versucht nicht, IAM-bezogenes Laufverhalten zu replizieren oder zu berücksichtigen. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln. In Situationen, in denen normalerweise IAM verwendet würde, z. B. zum Festlegen des Dienstkontos und damit der Berechtigungen für Cloud Functions, ist der Emulator jedoch nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer, ähnlich wie beim direkten Ausführen eines lokalen Scripts.

Einschränkung des Triggertyps

Derzeit werden von Firebase Local Emulator Suite nur HTTP-Anfrage ausgelöste Funktionen, benutzerdefinierte Eventarc-Ereignistrigger für Erweiterungen und Hintergrundereignis ausgelöste Funktionen für Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication und Pub/Sub unterstützt. Wenn Sie Erweiterungen mit anderen Arten von ausgelösten Funktionen bewerten möchten, müssen Sie Ihre Erweiterung in einem Test-Firebase-Projekt installieren.

Und jetzt?