Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Il test funziona in modo interattivo

La shell Funzioni cloud fornisce una shell interattiva per invocare funzioni con dati di test. La shell supporta tutti i tipi di trigger.

Imposta credenziali di amministratore (facoltativo)

Se si desidera che i test delle funzioni interagiscano con le API di Google o altre API di Firebase tramite l' SDK di Firebase Admin , potrebbe essere necessario impostare le credenziali di amministratore.

  • I trigger di Cloud Firestore e Realtime Database dispongono già di credenziali sufficienti e non richiedono un'installazione aggiuntiva.
  • Tutte le altre API, incluse le API Firebase come Authentication e FCM o le API di Google come Cloud Translation o Cloud Speech, richiedono i passaggi di installazione descritti in questa sezione. Questo vale sia per le funzioni shell che per firebase emulators:start .

Per impostare le credenziali di amministratore per le funzioni emulate:

  1. Apri il riquadro Account di servizio di Google Cloud Console.
  2. Assicurati che sia selezionato l' account del servizio predefinito di App Engine e utilizza il menu delle opzioni a destra per selezionare Crea chiave .
  3. Quando richiesto, selezionare JSON per il tipo di chiave e fare clic su Crea .
  4. Imposta le tue credenziali predefinite di Google in modo che puntino alla chiave scaricata:

    Unix

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

    finestre

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

Dopo aver completato questi passaggi, i test delle funzioni possono accedere a Firebase e alle API di Google utilizzando Admin SDK . Ad esempio, durante il test di un trigger di autenticazione, la funzione emulata potrebbe chiamare admin.auth().getUserByEmail(email) .

Servire le funzioni utilizzando una shell Funzioni cloud

La shell Funzioni cloud emula tutti i tipi di trigger di funzioni con una shell interattiva per richiamare le funzioni con i dati di test. Le opzioni variano in base al tipo di funzione, ma il formato di utilizzo di base è:

 myFunctionName(data, options)
 

Il parametro data è richiesto per i trigger Realtime Database, Cloud Firestore e PubSub e facoltativo per tutti gli altri tipi di funzioni. Inoltre, il parametro delle options opzionali è valido solo per le funzioni Realtime Database e Cloud Firestore.

Facoltativamente, è possibile caricare i dati di test da un file locale salvando il file come variabile e invocando una funzione con esso:

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

Installa e configura la shell Funzioni cloud

Per utilizzare questa funzione, firebase-tools devono avere la versione minima 3.11.0 e l'SDK delle firebase-functions deve avere la versione minima 0.6.2. Per aggiornare entrambi, esegui i seguenti comandi nella directory functions/ per il tuo progetto:

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

Se si utilizzano variabili di configurazione delle funzioni personalizzate, eseguire prima il comando per ottenere la propria configurazione personalizzata (eseguirla nella directory delle functions ) nel proprio ambiente locale:

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

Infine, esegui la shell con il seguente comando:

 firebase functions:shell
 

Richiamare le funzioni HTTPS

Per richiamare le funzioni HTTPS nella shell, l'utilizzo è lo stesso del modulo NPM di request , ma sostituire la request con il nome della funzione che si desidera emulare. Per esempio:

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

Richiama le funzioni di chiamata HTTPS

Quando si invocano le funzioni di chiamata HTTPS localmente, è necessario fornire i dati di test appropriati.

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

Facoltativamente, è possibile passare un Firebase-Instance-ID-token come secondo parametro. Questa deve essere una stringa.

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

L'emulazione di context.auth è al momento disponibile.

Richiamare le funzioni del database in tempo reale

Quando si eseguono localmente le funzioni del database in tempo reale, è necessario fornire dati di test appropriati. Ciò significa in genere fornire nuovi dati di test per onCreate operazioni onCreate , dati vecchi / rimossi per le operazioni onDelete ed entrambe per le funzioni onUpdate o onWrite :

 # invoke onCreate function
myDatabaseFunction('new_data')

# invoke onDelete function
myDatabaseFunction('old_data')

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

Oltre alle opzioni before/after , la shell fornisce l'opzione params da usare per deridere i caratteri jolly in un percorso:

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

Per impostazione predefinita, la shell esegue le funzioni del database in tempo reale con privilegi di amministratore (account di servizio). Utilizzare invece l'opzione auth per eseguire le funzioni come un determinato utente finale o come utente non autenticato:

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

Richiama le funzioni Firestore

Quando si eseguono le funzioni Firestore localmente, è necessario fornire i dati di test appropriati. Ciò significa in genere fornire nuovi dati di test per onCreate operazioni onCreate , dati vecchi / rimossi per le operazioni onDelete ed entrambe le funzioni onUpdate o onWrite . Si noti che i dati Firestore devono essere coppie chiave-valore; vedi Tipi di dati supportati .

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

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

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

Oltre ai campi before/after dell'oggetto data , è possibile utilizzare i campi params sull'oggetto options per deridere i caratteri jolly in un nome di documento:

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

La shell esegue sempre le funzioni Firestore con privilegi di amministratore, il che significa che deride un evento create / update / delete come se fosse stato eseguito da un utente amministrativo.

Richiamare le funzioni PubSub

Per le funzioni PubSub, inserire il payload del messaggio in un'istanza Buffer e aggiungere facoltativamente attributi di dati come mostrato:

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

Richiama le funzioni di Analytics

È possibile richiamare una funzione di Analytics senza dati eseguendo myAnalyticsFunction() nella shell. Per eseguire la funzione con i dati di test, si consiglia di definire una variabile per i campi dati di eventi specifici necessari per la funzione:

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

Richiama le funzioni di archiviazione, Auth e Crashlytics

Per le funzioni di archiviazione, Auth e Crashlytics, invoca la funzione locale con i dati di test che desideri visualizzare all'interno della funzione. I dati del test devono seguire i formati di dati corrispondenti:

Specificare solo i campi da cui dipende il codice o nessuno se si desidera eseguire solo la funzione.