Catch up on everthing we announced at this year's Firebase Summit. Learn more

Funktionen interaktiv testen

Die Cloud Functions-Shell bietet eine interaktive Shell zum Aufrufen von Funktionen mit Testdaten. Die Shell unterstützt alle Triggertypen.

Administratoranmeldeinformationen einrichten (optional)

Wenn Sie Ihre Funktionen Tests wollen mit Google APIs oder anderen Firebase APIs über die Interaktion Firebase Admin SDK , müssen Sie Administratoranmeldeinformationen einrichten.

  • Cloud Firestor und Echtzeit - Datenbank - Trigger haben bereits ausreichende Anmeldeinformationen und erfordern keine zusätzliche Einrichtung.
  • Für alle anderen APIs, einschließlich Firebase APIs wie Authentication und FCM oder Google APIs wie Cloud Translation oder Cloud Speech, sind die in diesem Abschnitt beschriebenen Einrichtungsschritte erforderlich. Dies gilt , ob Sie die Funktionen Shell oder verwenden firebase emulators:start .

So richten Sie Administratoranmeldeinformationen für emulierte Funktionen ein:

  1. Öffnen Sie die Dienstkonten Bereich der Google Cloud Console.
  2. Stellen Sie sicher , dass App Engine Standarddienstkonto ausgewählt ist, und verwenden Sie das Optionsmenü im rechten erstellen Taste auszuwählen.
  3. Wählen Sie bei Aufforderung JSON für den Schlüsseltyp, und klicken Sie auf Create.
  4. Legen Sie Ihre Google-Standardanmeldeinformationen so fest, dass sie auf den heruntergeladenen Schlüssel verweisen:

    Unix

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase functions:shell
    

    Fenster

    $ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    
    $ firebase functions:shell
    

Nach Abschluss dieser Schritte können Sie Ihre Funktionen Tests Firebase und Google APIs zugreifen , die mit Admin SDK . Zum Beispiel, wenn ein Authentifizierungsauslöse Testen könnte die emulierte Funktion aufrufen admin.auth().getUserByEmail(email) - admin.auth().getUserByEmail(email) .

Funktionen mit einer Cloud Functions-Shell bereitstellen

Die Cloud Functions-Shell emuliert alle Arten von Funktionstriggern mit einer interaktiven Shell zum Aufrufen der Funktionen mit Testdaten. Die Optionen variieren je nach Funktionstyp, aber das grundlegende Verwendungsformat ist:

myFunctionName(data, options)

Der data für Echtzeit - Datenbank erforderlich, Wolke Firestor und PubSub Trigger und optional für alle anderen Funktionstypen. Auch die optionalen options Parameter gelten nur für Echtzeit - Datenbank und Cloud - Firestore - Funktionen.

Optional können Sie Testdaten aus einer lokalen Datei laden, indem Sie die Datei als Variable speichern und damit eine Funktion aufrufen:

var data = require('./path/to/testData.json');
myFunction(data);

Cloud Functions-Shell installieren und konfigurieren

Um diese Funktion zu nutzen, firebase-tools müssen mindestens die Version 3.11.0 und firebase-functions SDK muss mindestens die Version 0.6.2. So aktualisieren Sie beide, die folgenden Befehle in den functions/ Verzeichnis für Ihr Projekt:

npm install --save firebase-functions@latest
npm install -g firebase-tools

Wenn Sie benutzerdefinierte Funktionen Konfigurationsvariablen verwenden, zuerst den Befehl ausführen , um Ihre benutzerdefinierte Konfiguration zu erhalten (führt dies im functions - Verzeichnis) in Ihrer lokalen Umgebung:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Führen Sie abschließend die Shell mit dem folgenden Befehl aus:

firebase functions:shell

HTTPS-Funktionen aufrufen

Für rufenden HTTPS - Funktionen in der Schale, ist die Nutzung der gleiche wie der request NPM - Modul, sondern ersetzen request mit dem Namen der Funktion , die Sie emulieren möchten. Zum Beispiel:

# invoke
myHttpsFunction()
myHttpsFunction.get()
myHttpsFunction.post()

# invoke at sub-path
myHttpsFunction('/path')
myHttpsFunction.get('/path')
myHttpsFunction.post('/path')

# send POST request with form data
myHttpsFunction.post('/path').form( {foo: 'bar' })

Aufrufen von HTTPS Callable-Funktionen

Beim lokalen Aufrufen von HTTPS Callable-Funktionen müssen Sie die entsprechenden Testdaten bereitstellen.

# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})

Optional können Sie in einem Pass Firebase-Instance-ID-token als zweiten Parameter. Dies muss eine Zeichenfolge sein.

# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})

Emulation von context.auth ist derzeit nicht verfügbar.

Funktionen der Echtzeitdatenbank aufrufen

Wenn Sie Realtime Database-Funktionen lokal ausführen, müssen Sie die entsprechenden Testdaten bereitstellen. Dies bedeutet im Allgemeinen neue Testdaten für die Bereitstellung von onCreate Operationen, alte / entfernte Daten für onDelete Operationen und sowohl für onUpdate oder onWrite Funktionen:

# invoke onCreate function
myDatabaseFunction('new_data')

# invoke onDelete function
myDatabaseFunction('old_data')

# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })

Neben dem before/after Optionen, bietet die Shell die params Option in spöttischen Platzhalter in einem Pfad zu verwenden:

# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})

Standardmäßig führt die Shell Echtzeitdatenbankfunktionen mit Administratorrechten (Dienstkonto) aus. Verwenden Sie die auth - Option, stattdessen laufen Funktionen wie einen bestimmten Endbenutzer oder als nicht authentifizierter Benutzer:

# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})

Firestore-Funktionen aufrufen

Wenn Sie Firestore-Funktionen lokal ausführen, müssen Sie die entsprechenden Testdaten bereitstellen. Dies bedeutet im Allgemeinen neue Testdaten für die Bereitstellung von onCreate Operationen, alte / entfernte Daten für onDelete Operationen und sowohl für onUpdate oder onWrite Funktionen. Beachten Sie, dass Firestore-Daten Schlüssel/Wert-Paare sein müssen. siehe Unterstützte Datentypen .

# invoke onCreate function
myFirestoreFunction({foo: ‘new’})

# invoke onDelete function
myFirestoreFunction({foo: ‘old’})

# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })

Zusätzlich zu den before/after Feldern des data können Sie die Verwendung params Felder auf den options in einem Dokumentnamen Mock Platzhalter - Objekt:

# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})

Die Shell führt Firestore-Funktionen immer mit Administratorrechten aus, d. h. sie verspottet ein Ereignis zum Erstellen/Aktualisieren/Löschen, als ob es von einem Administrator ausgeführt würde.

PubSub-Funktionen aufrufen

Für PubSub Funktionen, einfügen Ihre Nachricht Nutzlast in einem Buffer - Instanz und optional Datenattribute hinzufügen , wie gezeigt:

// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})

Analytics-Funktionen aufrufen

Sie können durch Ausführen einer Analytische Funktion ohne Daten aufrufen myAnalyticsFunction() in der Schale. Um die Funktion mit Testdaten auszuführen, wird empfohlen, eine Variable für die spezifischen Ereignisdatenfelder zu definieren, die Ihre Funktion benötigt:

var data = {
  eventDim: [{
    // populates event.data.params
    params:{foo:'bar'},
    // populates event.data.name
    name: 'event_name',
    // populates event.data.logTime, specify in microseconds
    timestampMicros: Date.now() * 1000,
    // populates event.data.previousLogTime, specify in microseconds
    previousTimestampMicros: Date.now() * 1000,
    // populates event.data.reportingDate, specify in 'YYYYMMDD' format
    date: '20170930',
    // populates event.data.valueInUSD
    valueInUsd: 230
  }],
  userDim: userDim
};

myAnalyticsFunction(data);

Speicher- und Authentifizierungsfunktionen aufrufen

Rufen Sie für Speicher- und Auth-Funktionen die lokale Funktion mit den Testdaten auf, die Sie in der Funktion sehen möchten. Ihre Testdaten müssen den entsprechenden Datenformaten entsprechen:

Geben Sie nur die Felder an, von denen Ihr Code abhängt, oder gar keine, wenn Sie nur die Funktion ausführen möchten.