Verbinden Sie Ihre App mit dem Cloud Functions-Emulator

Vor dem Anschluss Ihrer App an den Emulator Cloud - Funktionen, stellen Sie sicher , dass Sie die gesamte Firebase Local Emulator Suite Workflow verstehen , und dass Sie installieren und konfigurieren die lokale Emulator Suite und seine Bewertung CLI - Befehle .

Wählen Sie ein Firebase-Projekt aus

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

So wählen Sie das Projekt zu verwenden, bevor Sie die Emulatoren starten, in der CLI läuft firebase use in Ihrem Arbeitsverzeichnis. Oder Sie können den Pass --project Flag zu jedem Emulator - Befehl.

Lokale Emulator Suite unterstützt Emulation von realen Projekten und Firebase Demo - Projekte.

Projekttyp Merkmale Verwendung mit Emulatoren
Real

Ein echtes Firebase-Projekt ist eines, das Sie erstellt und konfiguriert haben (höchstwahrscheinlich über die Firebase-Konsole).

Echte Projekte haben Live-Ressourcen wie Datenbankinstanzen, Speicher-Buckets, Funktionen oder jede andere Ressource, 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.

Für alle Artikel , die Du nicht emuliert werden, Ihre Anwendungen und Code werden mit der Live - Ressource (Datenbankinstanz, Speicher Eimern, Funktion usw.) in Wechselwirkung treten.

Demo

Ein Demo - Projekt Firebase hat keine wirkliche Firebase Konfiguration und keine Live - Ressourcen. Auf diese Projekte wird normalerweise über Codelabs oder andere Tutorials zugegriffen.

Projekt - IDs für Demo - Projekte haben die demo- Präfix.

Bei der Arbeit mit Demo Firebase Projekten, Ihre Anwendungen und Code interact mit nur Emulatoren. Wenn Ihre App versucht, mit einer Ressource zu interagieren, für die kein Emulator ausgeführt wird, schlägt dieser Code fehl.

Wir empfehlen Ihnen, nach Möglichkeit Demoprojekte zu verwenden. Zu den Vorteilen gehören:

  • Einfachere Einrichtung, da Sie die Emulatoren ausführen können, ohne jemals ein Firebase-Projekt erstellen zu müssen
  • Höhere Sicherheit, denn wenn Ihr Code versehentlich nicht emulierte (Produktions-)Ressourcen aufruft, besteht keine Möglichkeit der Datenänderung, Nutzung und Abrechnung
  • Besserer Offline-Support, da Sie zum Herunterladen Ihrer SDK-Konfiguration nicht auf das Internet zugreifen müssen.

Instrumentieren Sie Ihre App, um mit den Emulatoren zu sprechen

Instrumentieren Sie Ihre App für aufrufbare Funktionen

Wenn Ihr Prototyp und Testaktivitäten beinhalten aufrufbar Backend - Funktionen , configure Interaktion mit den Cloud - Funktionen für Firebase Emulator wie folgt aus :

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFunctions functions = FirebaseFunctions.getInstance();
        functions.useEmulator("10.0.2.2", 5001);
Schnell
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Webversion 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Webversion 8

firebase.functions().useEmulator("localhost", 5001);

Instrumentieren Sie Ihre App für die Emulation von HTTPS-Funktionen

Jede HTTPS-Funktion in Ihrem Code wird vom lokalen Emulator mit dem folgenden URL-Format bereitgestellt:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Zum Beispiel eine einfache helloWorld würde Funktion mit der Standard - Host - Port und der Region serviert:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Instrumentieren Sie Ihre App für die Emulation von im Hintergrund ausgelösten Funktionen

Der Cloud Functions-Emulator unterstützt im Hintergrund ausgelöste Funktionen aus den folgenden Quellen:

  • Echtzeit-Datenbank-Emulator
  • Cloud Firestore-Emulator
  • Authentifizierungsemulator
  • Pub/Sub-Emulator

Um Hintergrundereignisse auszulösen, verbinden Sie Ihre App oder Ihren Testcode über das SDK für Ihre Plattform mit den Emulatoren.

Welche anderen Tools zum Testen von Cloud Functions gibt es?

Der Cloud Functions-Emulator wird durch weitere Prototypen- und Testtools ergänzt:

  • Die Cloud Functions-Shell, die das Prototyping und die Entwicklung interaktiver, iterativer Funktionen ermöglicht. Die Shell verwendet den Cloud Functions-Emulator mit einer Schnittstelle im REPL-Stil für die Entwicklung. Eine Integration mit den Emulatoren von Cloud Firestore oder Realtime Database ist nicht vorgesehen. Mit der Shell simulieren Sie Daten und führen Funktionsaufrufe durch, um die Interaktion mit Produkten zu simulieren, die die Local Emulator Suite derzeit nicht unterstützt: Analytics, Remote Config und Crashlytics.
  • Das Firebase Test SDK for Cloud Functions, ein Node.js mit Mokka-Framework für die Funktionsentwicklung. Tatsächlich bietet das Cloud Functions Test SDK eine Automatisierung auf der Cloud Functions-Shell.

Sie können mehr über die Cloud - Funktionen Shell und Cloud - Funktionen Test - SDK an Testfunktionen interaktiv und Unit - Tests von Cloud - Funktionen .

Unterschiede zwischen dem Cloud Functions-Emulator und der Produktion

Der Cloud Functions-Emulator ist für die meisten Anwendungsfälle ziemlich nah an der Produktionsumgebung. Wir haben umfangreiche Arbeit geleistet, um sicherzustellen, dass alles innerhalb der Node-Laufzeit so nah wie möglich an der Produktion ist. Der Emulator imitiert jedoch nicht die vollständige containerisierte Produktionsumgebung, sodass Ihr Funktionscode zwar realistisch ausgeführt wird, andere Aspekte Ihrer Umgebung (zB lokale Dateien, Verhalten nach Funktionsabstürzen usw.) sich jedoch unterscheiden.

Cloud-IAM

Die Firebase Emulator Suite versucht nicht, IAM-bezogenes Verhalten für die Ausführung zu replizieren oder zu respektieren. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln, aber in Situationen, in denen IAM normalerweise verwendet würde, z. ähnlich dem direkten Ausführen eines lokalen Skripts.

Speicher- und Prozessorbeschränkungen

Der Emulator erzwingt keine Speicher- oder Prozessorbeschränkungen für Ihre Funktionen. Allerdings ist der Emulator Unterstützung Ablaufen Funktionen über die timeoutSeconds Argument Laufzeit.

Beachten Sie, dass die Ausführungszeit von Funktionen von der Produktion abweichen kann, wenn Funktionen im Emulator ausgeführt werden. Wir empfehlen, dass Sie nach dem Entwerfen und Testen von Funktionen mit dem Emulator begrenzte Tests in der Produktion ausführen, um die Ausführungszeiten zu bestätigen.

Planung für Unterschiede in lokalen und Produktionsumgebungen

Da der Emulator auf Ihrem lokalen Computer ausgeführt wird, hängt er von Ihrer lokalen Umgebung für Anwendungen und integrierte Programme und Dienstprogramme ab.

Beachten Sie, dass sich Ihre lokale Umgebung für die Funktionsentwicklung von der Google-Produktionsumgebung unterscheiden kann:

  • Anwendungen , die Sie lokal installieren Sie die Produktionsumgebung (zB ImageMagick von simulieren diesem Tutorial ) im Verhalten von der Produktion unterscheiden kann, vor allem , wenn Sie eine andere Versionen erfordern oder in einer Nicht-Linux - Umgebung zu entwickeln. Ziehen Sie in Erwägung, neben der Funktionsbereitstellung eine eigene Binärkopie des fehlenden Programms bereitzustellen.

  • Ebenso Einbau-Dienstprogramme (zB Shell - Befehle wie ls , mkdir ) von Versionen in der Produktion unterscheiden verfügbar, vor allem , wenn Sie in einer Nicht-Linux - Umgebung sind die Entwicklung (zB macOS). Sie können dieses Problem beheben, indem Sie Node-only-Alternativen zu nativen Befehlen verwenden oder Linux-Binärdateien erstellen, die mit Ihrer Bereitstellung gebündelt werden.

Erneut versuchen

Der Cloud Functions-Emulator unterstützt das Wiederholen von Funktionen bei einem Fehler nicht.

Was als nächstes?