Powłoka Cloud Functions udostępnia interaktywną powłokę do wywoływania z danymi testowymi. Powłoka obsługuje wszystkie typy aktywatorów.
Skonfiguruj dane logowania administratora (opcjonalnie)
Jeśli chcesz, aby testy funkcji działały z interfejsami API Google lub innymi Firebase interfejsów API poprzez pakiet SDK Firebase Admin. dane logowania administratora.
- Aktywatory Cloud Firestore i Realtime Database mają już odpowiednie dane logowania i nie wymagają dodatkowej konfiguracji.
- Wszystkie inne interfejsy API, w tym interfejsy Firebase API, np. Authentication i FCM oraz interfejsy API Google, takie jak Cloud Translation czy Cloud Speech, wymagają wykonania czynności konfiguracyjnych opisanych w tej sekcji. Ma to zastosowanie niezależnie od tego, czy używasz powłoki Cloud Functions, czy
firebase emulators:start
.
Aby skonfigurować dane logowania administratora na potrzeby emulowanych funkcji:
- Otwórz aplikację Panel Konta usługi konsoli Google Cloud.
- Wybierz App Engine domyślne konto usługi i użyj otwórz menu opcji po prawej stronie i wybierz Utwórz klucz.
- Gdy pojawi się prośba, wybierz typ klucza JSON i kliknij Utwórz.
Ustaw swoje domyślne dane logowania Google, by wskazywały pobrany klucz:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
Gdy wykonasz te czynności, testy funkcjonalne będą miały dostęp do Firebase,
interfejsów API Google przy użyciu pakietu Admin SDK, Na przykład podczas testowania
aktywatora Authentication, emulowana funkcja może wywołać funkcję
admin.auth().getUserByEmail(email)
Obsługa funkcji z użyciem powłoki Cloud Functions
Powłoka Cloud Functions emuluje wszystkie typy aktywatorów funkcji za pomocą tagu interaktywna powłoka do wywoływania funkcji z danymi testowymi. Dostępne opcje według typu funkcji, ale podstawowy format użycia to:
myFunctionName(data, options)
Parametr data
jest wymagany w przypadku Bazy danych czasu rzeczywistego, Cloud Firestore,
i aktywatorów PubSub oraz opcjonalne w przypadku wszystkich innych typów funkcji.
Poza tym opcjonalny parametr options
ma zastosowanie tylko w przypadku Bazy danych czasu rzeczywistego.
i Cloud Firestore.
Opcjonalnie dane testowe można wczytać z przez zapisanie pliku jako zmiennej i wywołanie z nim funkcji:
var data = require('./path/to/testData.json');
myFunction(data);
Instalowanie i konfigurowanie powłoki Cloud Functions
Aby można było korzystać z tej funkcji, firebase-tools
musi mieć wersję 3.11.0 lub większą,
Pakiet SDK firebase-functions
musi mieć wersję 0.6.2 lub większą. Aby to zrobić,
uruchom w projekcie te polecenia w katalogu functions/
:
npm install --save firebase-functions@latest
npm install -g firebase-tools
Jeśli używasz zmiennych konfiguracji funkcji niestandardowych, najpierw uruchom
polecenie pobrania konfiguracji niestandardowej (uruchom je w katalogu functions
)
w Twoim lokalnym środowisku:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Na koniec uruchom powłokę tym poleceniem:
firebase functions:shell
Wywoływanie funkcji HTTPS
Jeśli chcesz wywoływać funkcje HTTPS w powłoce, użycie jest takie samo jak
request
Moduł NPM, który został zastąpiony
request
nazwą funkcji, którą chcesz emulować. Przykład:
# 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' })
Wywoływanie funkcji HTTPS wywoływanych przez HTTPS
Podczas lokalnego wywoływania funkcji wywoływanych przez HTTPS musisz podać odpowiednie dane testowe.
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
Opcjonalnie jako drugi parametr możesz przekazać Firebase-Instance-ID-token
. Musi to być ciąg znaków.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
Emulacja funkcji context.auth
jest obecnie niedostępna.
Wywoływanie funkcji bazy danych czasu rzeczywistego
Gdy uruchamiasz funkcje Bazy danych czasu rzeczywistego lokalnie, musisz podać
odpowiednich danych testowych. Zwykle oznacza to zazwyczaj przesyłanie nowych danych testowych
Operacje onCreate
, stare/usunięte dane operacji onDelete
oraz zarówno te dotyczące
Funkcje onUpdate
i 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' })
Oprócz opcji before/after
powłoka zawiera interfejs params
opcja używana do imitowania symboli wieloznacznych w ścieżce:
# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})
Domyślnie powłoka uruchamia funkcje Bazy danych czasu rzeczywistego z uprawnieniami administratora (konto usługi)
uprawnień. Aby zamiast tego uruchamiać funkcje jako określone, użyj opcji auth
lub nieuwierzytelniony użytkownik:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
Wywoływanie funkcji Firestore
Podczas lokalnego uruchamiania funkcji Firestore musisz podać
odpowiednich danych testowych. Zwykle oznacza to zazwyczaj przesyłanie nowych danych testowych
Operacje onCreate
, stare/usunięte dane operacji onDelete
oraz zarówno te dotyczące
funkcji onUpdate
i onWrite
. Pamiętaj, że dane Firestore muszą być
pary klucz-wartość; zobacz Obsługiwane typy danych.
# invoke onCreate function
myFirestoreFunction({foo: ‘new’})
# invoke onDelete function
myFirestoreFunction({foo: ‘old’})
# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })
Oprócz pól before/after
obiektu data
funkcja
możesz użyć pól params
w obiekcie options
do imitacji
symbole wieloznaczne w nazwie dokumentu:
# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})
Powłoka zawsze uruchamia funkcje Firestore z uprawnieniami administratora, które imituje zdarzenie tworzenia/aktualizacji/usuwania, tak jakby zostało ono wykonane przez użytkownika z dostępem administracyjnym.
Wywołaj funkcje PubSub
W przypadku funkcji PubSub wstaw ładunek wiadomości do instancji Buffer
i
dodaj opcjonalne atrybuty danych, jak pokazano poniżej:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
Wywoływanie funkcji Analytics
Funkcję Analytics można wywołać bez żadnych danych przez:
uruchamianie w powłoce programu myAnalyticsFunction()
.
Aby uruchomić funkcję z danymi testowymi, zalecamy zdefiniowanie zmiennej dla
konkretne pola danych zdarzenia, których Twoja funkcja potrzebuje:
var data = {
eventDim: [{
// populates event.data.params
params: {foo: {stringValue: 'bar'} },
// Also valid:
// {intValue: '10'}, {floatValue: '1.0'}, {doubleValue: '1.0'}
// 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);
Wywoływanie funkcji pamięci i uwierzytelniania
W przypadku funkcji przechowywania i uwierzytelniania wywołaj funkcję lokalną za pomocą i testowanie danych, które chcesz zobaczyć wewnątrz funkcji. Dane testowe muszą muszą mieć odpowiednie formaty danych:
- Dla Cloud Storage:
ObjectMetadata
- Dla Authentication:
UserRecord
Określ tylko pola, od których zależy kod, lub nie podawaj żadnych, jeśli gdy użytkownik chce uruchomić funkcję.