Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Testuj funkcje interaktywnie

Powłoka Cloud Functions zapewnia interaktywną powłokę do wywoływania funkcji z danymi testowymi. Powłoka obsługuje wszystkie typy wyzwalaczy.

Skonfiguruj dane logowania administratora (opcjonalnie)

Jeśli chcesz, aby testy funkcje interakcji z API Google lub innych API Firebase poprzez Firebase Admin SDK , może trzeba skonfigurować poświadczenia administratora.

  • Cloud FireStore and Realtime wyzwalacze bazodanowe mają już wystarczające referencje, i nie wymagają dodatkowej konfiguracji.
  • Wszystkie inne interfejsy API, w tym interfejsy Firebase API, takie jak uwierzytelnianie i FCM, lub interfejsy Google, takie jak Cloud Translation lub Cloud Speech, wymagają czynności konfiguracyjnych opisanych w tej sekcji. Dotyczy to czy używasz funkcje skorupach firebase emulators:start .

Aby skonfigurować poświadczenia administratora dla emulowanych funkcji:

  1. Otwórz okienko kont usług z konsoli Google Cloud.
  2. Upewnij się, że domyślne konto Usługa App Engine jest zaznaczone, a korzystać z menu opcji w prawo, aby wybrać Utwórz klucz.
  3. Gdy pojawi się monit, wybierz JSON za typ klucza, a następnie kliknij przycisk Utwórz.
  4. Ustaw domyślne dane logowania Google tak, 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 czynności, twoje testy funkcje mogą uzyskać dostęp Firebase i Google API za pomocą Admin SDK . Na przykład podczas testowania spust uwierzytelnienia, funkcja emulowane mogłoby wywołać admin.auth().getUserByEmail(email) .

Udostępniaj funkcje za pomocą powłoki Cloud Functions

Powłoka Cloud Functions emuluje wszystkie typy wyzwalaczy funkcji za pomocą interaktywnej powłoki do wywoływania funkcji z danymi testowymi. Opcje różnią się w zależności od typu funkcji, ale podstawowy format użycia to:

myFunctionName(data, options)

data parametr jest wymagany dla Realtime Database Cloud FireStore i PubSub wyzwalaczy i opcjonalne dla wszystkich innych typów funkcyjnych. Ponadto, opcjonalny options parametr jest ważny tylko dla Realtime Database i funkcji Chmura FireStore.

Opcjonalnie możesz załadować dane testowe z pliku lokalnego, zapisując plik jako zmienną i wywołując z nim funkcję:

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

Zainstaluj i skonfiguruj powłokę Cloud Functions

Aby korzystać z tej funkcji, firebase-tools muszą mieć minimalną wersję 3.11.0, a firebase-functions SDK musi mieć minimalną wersję 0.6.2. Aby zaktualizować zarówno uruchom następujące polecenia w functions/ katalogu dla projektu:

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

Jeśli używasz funkcji indywidualnych zmiennych konfiguracyjnych, najpierw uruchom polecenie, aby uzyskać swój własny config (uruchomić ten w functions katalogu) w swoim ś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

Wywoływania funkcji HTTPS w skorupkach, zużycie jest takie samo jak request modułu NPM, ale zastąpić request z nazwą funkcji, którą chcemy naśladować. 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ływane HTTPS

Podczas lokalnego wywoływania funkcji HTTPS musisz podać odpowiednie dane testowe.

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

Opcjonalnie można przekazać w 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 aktualnie niedostępna.

Wywołaj funkcje bazy danych czasu rzeczywistego

Uruchamiając lokalnie funkcje Bazy danych czasu rzeczywistego, musisz podać odpowiednie dane testowe. To zazwyczaj oznacza dostarczenie nowych danych testowych dla onCreate operacji, stare / usunięciu danych dla onDelete operacji, a zarówno dla onUpdate lub onWrite funkcji:

# 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 before/after opcji, powłoka zapewnia params możliwość korzystania w szyderczy 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 auth opcję zamiast funkcji uruchamianych jako określonego użytkownika końcowego lub jako niezidentyfikowany użytkownik:

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

Wywołaj funkcje Firestore

Gdy uruchamiasz funkcje Firestore lokalnie, musisz podać odpowiednie dane testowe. To zazwyczaj oznacza dostarczenie nowych danych testowych dla onCreate operacji, stare / usunięciu danych dla onDelete operacji, a zarówno dla onUpdate lub onWrite funkcji. Pamiętaj, że dane Firestore muszą być parami klucz-wartość; patrz 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 before/after polach data obiektu, można użyć params pola dotyczące options sprzeciwiają się mock 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, co oznacza, że ​​naśladuje zdarzenie tworzenia/aktualizacji/usuwania, tak jakby zostało to wykonane przez użytkownika administracyjnego.

Wywołaj funkcje PubSub

Dla funkcji PubSub włóż wiadomości ładowności w Buffer instancji i ewentualnie dodać atrybuty danych w następujący sposób:

// 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 analityczne

Można wywołać funkcję Analytics bez żadnych danych, uruchamiając myAnalyticsFunction() w skorupkach. Aby uruchomić funkcję z danymi testowymi, zaleca się zdefiniowanie zmiennej dla określonych pól danych zdarzenia, których potrzebuje funkcja:

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

Wywołaj funkcje przechowywania, uwierzytelniania i Crashlytics

W przypadku funkcji Storage, Auth i Crashlytics wywołaj funkcję lokalną z danymi testowymi, które chcesz wyświetlić wewnątrz funkcji. Twoje dane testowe muszą być zgodne z odpowiednimi formatami danych:

Określ tylko pola, od których zależy Twój kod, lub wcale, jeśli chcesz tylko uruchomić funkcję.