Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Testfunktionen interaktiv

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

Administratoranmeldeinformationen einrichten (optional)

Wenn Ihre Funktionstests über das Firebase Admin SDK mit Google APIs oder anderen Firebase-APIs interagieren sollen, müssen Sie möglicherweise 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 Authentifizierung und FCM oder Google-APIs wie Cloud Translation oder Cloud Speech, sind die in diesem Abschnitt beschriebenen Einrichtungsschritte erforderlich. Dies gilt unabhängig davon, ob Sie die Funktionsshell- oder firebase emulators:start .

So richten Sie Administratoranmeldeinformationen für emulierte Funktionen ein:

  1. Öffnen Sie den Bereich " Dienstkonten" der Google Cloud Console.
  2. Stellen Sie sicher, dass das App Engine-Standarddienstkonto ausgewählt ist, und wählen Sie im Optionsmenü rechts die Option Schlüssel erstellen aus .
  3. Wenn Sie dazu aufgefordert werden, wählen Sie JSON als Schlüsseltyp aus und klicken Sie auf Erstellen .
  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
     

    Windows

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

Nach Abschluss dieser Schritte können Ihre Funktionstests mithilfe des Admin-SDK auf Firebase- und Google-APIs zugreifen. Wenn Sie beispielsweise einen Authentifizierungsauslöser testen, kann die emulierte Funktion admin.auth().getUserByEmail(email) .

Servieren Sie Funktionen mithilfe einer Cloud-Funktions-Shell

Die Cloud-Funktions-Shell emuliert alle Arten von Funktionsauslösern mit einer interaktiven Shell zum Aufrufen der Funktionen mit Testdaten. Die Optionen variieren je nach Funktionstyp. Das grundlegende Verwendungsformat lautet jedoch:

 myFunctionName(data, options)
 

Der data für Echtzeit - Datenbank erforderlich, Wolke Firestor und PubSub Trigger und optional für alle anderen Funktionstypen. Außerdem ist der optionale options nur für Echtzeitdatenbank- und Cloud-Firestore-Funktionen gültig.

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);
 

Installieren und konfigurieren Sie die Cloud Functions-Shell

Um diese Funktion nutzen zu können, müssen firebase-tools die Mindestversion 3.11.0 und das firebase-functions SDK die Mindestversion 0.6.2 haben. Führen Sie die folgenden Befehle im Verzeichnis functions/ für Ihr Projekt aus, um beide zu aktualisieren:

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

Wenn Sie Konfigurationsvariablen für benutzerdefinierte Funktionen verwenden, führen Sie zuerst den Befehl aus, um Ihre benutzerdefinierte Konfiguration (führen Sie diese im functions ) in Ihrer lokalen Umgebung abzurufen:

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

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

 firebase functions:shell
 

Rufen Sie HTTPS-Funktionen auf

Beim Aufrufen von HTTPS-Funktionen in der Shell entspricht die Verwendung der request NPM-Moduls, ersetzt jedoch die request durch den Namen der Funktion, die Sie emulieren möchten. Beispielsweise:

 # 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' })
 

Rufen Sie aufrufbare HTTPS-Funktionen auf

Wenn Sie HTTPS Callable-Funktionen lokal aufrufen, müssen Sie die entsprechenden Testdaten angeben.

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

Optional können Sie ein Firebase-Instance-ID-token als zweiten Parameter übergeben. Dies muss eine Zeichenfolge sein.

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

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

Rufen Sie Echtzeitdatenbankfunktionen auf

Wenn Sie Echtzeitdatenbankfunktionen lokal ausführen, müssen Sie die entsprechenden Testdaten bereitstellen. Dies bedeutet im Allgemeinen, dass neue Testdaten für onCreate Vorgänge, alte / entfernte Daten für onDelete Vorgänge und beide für onUpdate oder onWrite Funktionen onWrite werden:

 # invoke onCreate function
myDatabaseFunction('new_data')

# invoke onDelete function
myDatabaseFunction('old_data')

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

Zusätzlich zu den before/after params Optionen bietet die Shell die Option params , mit der Platzhalter in einem Pfad verspottet werden können:

 # 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 Option auth um stattdessen Funktionen als bestimmter Endbenutzer oder als nicht authentifizierter Benutzer auszuführen:

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

Rufen Sie Firestore-Funktionen auf

Wenn Sie Firestore-Funktionen lokal ausführen, müssen Sie die entsprechenden Testdaten bereitstellen. Dies bedeutet im Allgemeinen, dass neue Testdaten für onCreate Vorgänge, alte / entfernte Daten für onDelete Vorgänge und sowohl für onUpdate als auch für onWrite Funktionen onWrite werden. 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. Dies bedeutet, dass ein Ereignis zum Erstellen / Aktualisieren / Löschen verspottet wird, als ob es von einem Administrator ausgeführt worden wäre.

Rufen Sie PubSub-Funktionen auf

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'}})
 

Rufen Sie Analytics-Funktionen auf

Sie können eine Analytics-Funktion ohne Daten myAnalyticsFunction() indem Sie myAnalyticsFunction() in der Shell myAnalyticsFunction() . 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);
 

Rufen Sie die Funktionen Storage, Auth und Crashlytics auf

Rufen Sie für die Funktionen Storage, Auth und Crashlytics die lokale Funktion mit den Testdaten auf, die Sie innerhalb 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 die Funktion nur ausführen möchten.