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-.

Bei der Arbeit mit Firebase-Demoprojekten 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 erstellen zu müssen
  • 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 zum Herunterladen der SDK-Konfiguration kein Internetzugriff erforderlich ist.

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 obigen Befehl ausführen, werden Sie aufgefordert, die neueste Version der Erweiterung firebase/firestore-send-email 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

Jetzt lädt Local Emulator Suite mithilfe der in Ihrem 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. 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 Verhalten bei der Ausführung zu replizieren oder zu respektieren. 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. Um Erweiterungen zu bewerten, die andere Arten ausgelöster Funktionen verwenden, müssen Sie die Erweiterung in einem Firebase-Testprojekt installieren.

Und jetzt?