Cloud Functions kabuğu, çağırma işlemi için etkileşimli bir kabuk sağlar. fonksiyonlarının test edilmesini sağlar. Kabuk, tüm tetikleyici türlerini destekler.
Yönetici kimlik bilgilerini ayarlayın (isteğe bağlı)
İşlevler testlerinizin, Google API'leri veya diğer Firebase ile etkileşime girmesini istiyorsanız Firebase Admin SDK'sı aracılığıyla API'leri ayarlamak için yönetici kimlik bilgileri.
- Cloud Firestore ve Realtime Database tetikleyicileri zaten yeterli sayıda kimlik bilgisine sahiptir ve ek kurulum gerektirmez.
- Authentication ve FCM gibi Firebase API'leri veya Cloud Translation ya da Cloud Speech gibi Google API'leri dahil olmak üzere diğer tüm API'ler için bu bölümde açıklanan kurulum adımlarının uygulanması gerekir. Bu, Cloud Functions kabuğunu veya
firebase emulators:start
kabuğunu kullanmanızdan bağımsız olarak geçerlidir.
Emüle edilen işlevler için yönetici kimlik bilgilerini ayarlamak üzere:
- Şunu açın: Hizmet Hesapları bölmesi Google Cloud konsolunda görebilirsiniz.
- App Engine varsayılan hizmet hesabının seçili olduğundan emin olun ve şunu kullanın: Anahtar oluştur'u seçmek için sağdaki seçenekler menüsünü tıklayın.
- İstendiğinde, anahtar türü olarak JSON'yi seçip Oluştur'u tıklayın.
Varsayılan Google kimlik bilgilerinizi, indirilen anahtarı işaret edecek şekilde ayarlayın:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
Bu adımları tamamladıktan sonra işlev testleriniz Firebase'e ve
Admin SDK'sını kullanan Google API'leri Örneğin,
Authentication tetikleyicisi ise emüle edilen işlev
admin.auth().getUserByEmail(email)
.
İşlevleri Cloud Functions kabuğu kullanarak sunma
Cloud Functions kabuğu, her tür işlev tetikleyicisi türünü işlevlerin test verileriyle çağrılmasına olanak tanıyan etkileşimli kabuk. Seçenekler değişiklik gösterir temel kullanım biçimi şu şekildedir:
myFunctionName(data, options)
data
parametresi; Realtime Database, Cloud Firestore ve
ve PubSub tetikleyicileri, diğer tüm işlev türleri için isteğe bağlıdır.
Ayrıca isteğe bağlı options
parametresi yalnızca Realtime Database için geçerlidir
Cloud Firestore işlevlerine dahildir.
İsteğe bağlı olarak, test verilerini yerel bir dosyasını değişken olarak kaydedip bir işlev çağırarak dosyayı aşağıdaki gibi değiştirin:
var data = require('./path/to/testData.json');
myFunction(data);
Cloud Functions kabuğunu yükleme ve yapılandırma
Bu özelliği kullanmak için firebase-tools
, en az 3.11.0 sürümüne sahip olmalı ve
firebase-functions
SDK'sının en az 0.6.2 sürümü olması gerekir. Her ikisini de güncellemek için
projenizin functions/
dizininde aşağıdaki komutları çalıştırın:
npm install --save firebase-functions@latest
npm install -g firebase-tools
Özel işlevler yapılandırma değişkenleri kullanıyorsanız önce
komutuna ekleyerek (bunu functions
dizininde çalıştırın)
yerel ortamınızda:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Son olarak, kabuğu aşağıdaki komutla çalıştırın:
firebase functions:shell
HTTPS işlevlerini çağırma
Kabukta HTTPS işlevlerini çağırmak için kullanım,
request
NPM modülü, ancak değiştirin
request
öğesine emüle etmek istediğiniz işlevin adını yazın. Örneğin:
# 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' })
HTTPS çağrılabilir işlevlerini çağırma
HTTPS Çağırılabilir işlevlerini yerel olarak çağırırken uygun test verilerini sağlamanız gerekir.
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
İsteğe bağlı olarak, ikinci parametre olarak bir Firebase-Instance-ID-token
aktarabilirsiniz. Bu bir dize olmalıdır.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
context.auth
emülasyonu şu anda kullanılamıyor.
Realtime Database işlevlerini çağırma
Realtime Database işlevlerini yerel olarak çalıştırırken şu bilgileri sağlamanız gerekir:
uygun test verileri. Bu genellikle, yeni test verileri sunmak anlamına gelir.
onCreate
işlemleri, onDelete
işlemlerine ait eski/kaldırılmış veriler ve her ikisi için de
onUpdate
veya onWrite
işlevleri:
# invoke onCreate function
myDatabaseFunction('new_data')
# invoke onDelete function
myDatabaseFunction('old_data')
# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })
Kabuk, before/after
seçeneklerine ek olarak params
öğesini de sağlar.
bir yoldaki sahte joker karakterlerde kullanım seçeneği:
# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})
Kabuk, varsayılan olarak Realtime Database işlevlerini yönetici (hizmet hesabı) ile çalıştırır.
ayrıcalıkları. İşlevleri belirli bir öğe olarak çalıştırmak için auth
seçeneğini kullanın.
son kullanıcı olarak veya kimliği doğrulanmamış bir kullanıcı olarak:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
Firestore işlevlerini çağırma
Firestore işlevlerini yerel olarak çalıştırırken
uygun test verileri. Bu genellikle, yeni test verileri sunmak anlamına gelir.
onCreate
işlemleri, onDelete
işlemlerine ait eski/kaldırılmış veriler ve her ikisi için de
onUpdate
veya onWrite
işlevleri. Firestore verilerinin iyi olması ve
anahtar/değer çiftleri; Desteklenen Veri Türleri bölümünü inceleyin.
# invoke onCreate function
myFirestoreFunction({foo: ‘new’})
# invoke onDelete function
myFirestoreFunction({foo: ‘old’})
# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })
data
nesnesinin before/after
alanlarına ek olarak,
model oluşturmak için options
nesnesindeki params
alanlarını kullanabilirsiniz
doküman adındaki joker karakterler:
# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})
Kabuk, Firestore işlevlerini her zaman yönetici ayrıcalıklarıyla çalıştırır. bir oluşturma/güncelleme/silme etkinliği ile sanki bir kullanıcı tarafından yapılmış gibi taklit yönetici kullanıcı.
PubSub işlevlerini çağırma
PubSub işlevleri için mesaj yükünüzü bir Buffer
örneğine ekleyin ve
isteğe bağlı olarak veri özelliklerini aşağıda gösterildiği gibi ekleyin:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
Analytics işlevlerini çağırma
Bir Analytics işlevini herhangi bir veri olmadan şu şekilde çağırabilirsiniz:
myAnalyticsFunction()
çalıştırmanız gerekir.
İşlevi test verileriyle çalıştırmak amacıyla
fonksiyonunuzun ihtiyaç duyduğu belirli etkinlik verisi alanları:
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);
Storage ve Auth işlevlerini çağırma
Storage ve Auth işlevleri için yerel işlevi fonksiyonun içinde görmek istediğiniz verileri test edin. Test verileriniz ilgili veri biçimlerini kullanın:
- Cloud Storage için:
ObjectMetadata
- Authentication için:
UserRecord
Yalnızca kodunuzun bağlı olduğu alanları belirtin veya yalnızca fonksiyonunu çalıştırmak istiyorsunuz.