Powłoka Cloud Functions udostępnia interaktywną powłokę do wywoływania funkcji z danymi testowymi. Powłoka obsługuje wszystkie typy wyzwalaczy.
Skonfiguruj poświadczenia administratora (opcjonalnie)
Jeśli chcesz, aby Twoje testy funkcji współdziałały z interfejsami API Google lub innymi interfejsami API Firebase za pośrednictwem pakietu Firebase Admin SDK , może być konieczne skonfigurowanie danych logowania administratora.
- Wyzwalacze Cloud Firestore i Realtime Database mają już wystarczające dane uwierzytelniające i nie wymagają dodatkowej konfiguracji.
- Wszystkie inne interfejsy API, w tym interfejsy API Firebase, takie jak uwierzytelnianie i FCM, lub interfejsy API Google, takie jak Cloud Translation lub Cloud Speech, wymagają kroków 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ć poświadczenia administratora dla emulowanych funkcji:
- Otwórz panel Konta usług w Google Cloud Console.
- Upewnij się, że wybrane jest domyślne konto usługi App Engine i użyj menu opcji po prawej stronie, aby wybrać opcję Utwórz klucz .
- Po wyświetleniu monitu wybierz typ klucza JSON i kliknij opcję Utwórz .
Ustaw domyślne dane uwierzytelniające Google, aby wskazywały pobrany klucz:
Uniksa
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
Okna
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
Po wykonaniu tych kroków testy funkcji uzyskają dostęp do interfejsów API Firebase i Google za pomocą pakietu Admin SDK . Na przykład podczas testowania wyzwalacza uwierzytelniania emulowana funkcja może wywołać admin.auth().getUserByEmail(email)
.
Obsługuj funkcje za pomocą powłoki Cloud Functions
Powłoka Cloud Functions emuluje wszystkie typy wyzwalaczy funkcji za pomocą interaktywnej powłoki umożliwiającej wywoływanie funkcji z danymi testowymi. Opcje różnią się w zależności od typu funkcji, ale podstawowy format użycia to:
myFunctionName(data, options)
Parametr data
jest wymagany w przypadku wyzwalaczy Realtime Database, Cloud Firestore i PubSub oraz opcjonalny w przypadku wszystkich innych typów funkcji. Ponadto opcjonalny parametr options
jest ważny tylko dla funkcji Realtime Database i Cloud Firestore.
Opcjonalnie możesz załadować dane testowe z pliku lokalnego, zapisując plik jako zmienną i wywołując za jej pomocą funkcję:
var data = require('./path/to/testData.json');
myFunction(data);
Zainstaluj i skonfiguruj powłokę Cloud Functions
Aby móc korzystać z tej funkcji, firebase-tools
muszą mieć wersję minimalną 3.11.0, a zestaw SDK firebase-functions
musi mieć wersję minimalną 0.6.2. Aby zaktualizować oba, uruchom następujące polecenia w katalogu functions/
swojego projektu:
npm install --save firebase-functions@latest
npm install -g firebase-tools
Jeśli używasz zmiennych konfiguracyjnych funkcji niestandardowych, najpierw uruchom komendę, aby uzyskać niestandardową konfigurację (uruchom ją w katalogu functions
) w środowisku lokalnym:
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ę za pomocą następującego polecenia:
firebase functions:shell
Wywołaj funkcje HTTPS
W przypadku wywoływania funkcji HTTPS w powłoce sposób użycia jest taki sam, jak w przypadku modułu request
NPM, ale zastąp request
nazwą funkcji, którą chcesz emulować. Na 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łaj funkcje wywoływalne HTTPS
Podczas lokalnego wywoływania funkcji HTTPS Callable należy podać odpowiednie dane testowe.
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
Opcjonalnie możesz przekazać Firebase-Instance-ID-token
jako drugi parametr. To musi być ciąg.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
Emulacja context.auth
jest obecnie niedostępna.
Wywołaj funkcje bazy danych czasu rzeczywistego
Podczas lokalnego uruchamiania funkcji Bazy danych czasu rzeczywistego konieczne będzie podanie odpowiednich danych testowych. Ogólnie oznacza to dostarczenie nowych danych testowych dla operacji onCreate
, starych/usuniętych danych dla operacji onDelete
oraz obu funkcji 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 udostępnia opcję params
, której można używać podczas kpin z 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 (konta usługi). Użyj opcji auth
, aby zamiast tego uruchamiać funkcje jako konkretny użytkownik końcowy lub jako użytkownik nieuwierzytelniony:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
Wywołaj funkcje Firestore
Podczas lokalnego uruchamiania funkcji Firestore musisz podać odpowiednie dane testowe. Zwykle oznacza to dostarczenie nowych danych testowych dla operacji onCreate
, starych/usuniętych danych dla operacji onDelete
oraz obu funkcji onUpdate
i onWrite
. Pamiętaj, że dane Firestore muszą być parami 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
można użyć pól params
w obiekcie options
, aby zaimprowizować 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 administracyjnymi, co oznacza, że kpi ze zdarzenia tworzenia/aktualizacji/usuwania tak, jakby zostało wykonane przez użytkownika administracyjnego.
Wywołaj funkcje PubSub
W przypadku funkcji PubSub wstaw ładunek wiadomości do instancji Buffer
i opcjonalnie dodaj atrybuty danych, jak pokazano:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
Wywołaj funkcje Analytics
Możesz wywołać funkcję Analytics bez żadnych danych, uruchamiając myAnalyticsFunction()
w powłoce. Aby uruchomić funkcję z danymi testowymi, zaleca się zdefiniowanie zmiennej dla konkretnych pól danych zdarzeń, których potrzebuje Twoja funkcja:
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łaj funkcje przechowywania i uwierzytelniania
W przypadku funkcji Storage i Auth wywołaj funkcję lokalną z danymi testowymi, które chcesz zobaczyć wewnątrz funkcji. Twoje dane testowe muszą być zgodne z odpowiednimi formatami danych:
- Do przechowywania w chmurze:
ObjectMetadata
- Do uwierzytelnienia:
UserRecord
Określ tylko pola, od których zależy Twój kod, lub nie określ wcale, jeśli chcesz tylko uruchomić tę funkcję.