Bulut İşlevleri kabuğu, işlevlerin test verileriyle çağrılması için etkileşimli bir kabuk sağlar. Kabuk tüm tetikleyici türlerini destekler.
Yönetici kimlik bilgilerini ayarlayın (isteğe bağlı)
İşlev testlerinizin Firebase Yönetici SDK'sı aracılığıyla Google API'leri veya diğer Firebase API'leri ile etkileşime girmesini istiyorsanız yönetici kimlik bilgilerini ayarlamanız gerekebilir.
- Cloud Firestore ve Realtime Database tetikleyicileri zaten yeterli kimlik bilgilerine sahiptir ve ek kurulum gerektirmez .
- Kimlik Doğrulama ve FCM gibi Firebase API'leri veya Cloud Translation veya Cloud Speech gibi Google API'leri de dahil olmak üzere diğer tüm API'ler, bu bölümde açıklanan kurulum adımlarını gerektirir. Bu, Cloud Functions kabuğunu veya
firebase emulators:start
.
Benzetilmiş işlevlere yönelik yönetici kimlik bilgilerini ayarlamak için:
- Google Cloud Console'un Hizmet Hesapları bölmesini açın.
- App Engine varsayılan hizmet hesabının seçildiğinden emin olun ve sağdaki seçenekler menüsünü kullanarak Anahtar oluştur öğesini seçin.
- İstendiğinde anahtar türü olarak JSON'u seçin ve Oluştur'a tıklayın.
Google varsayılan kimlik bilgilerinizi indirilen anahtarı işaret edecek şekilde ayarlayın:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
pencereler
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
Bu adımları tamamladıktan sonra, işlev testleriniz Yönetici SDK'sını kullanarak Firebase ve Google API'lerine erişebilir. Örneğin, bir Kimlik Doğrulama tetikleyicisini test ederken öykünülmüş işlev admin.auth().getUserByEmail(email)
çağırabilir.
Cloud Functions kabuğunu kullanarak işlevleri sunma
Bulut İşlevleri kabuğu, işlevlerin test verileriyle çağrılması için etkileşimli bir kabukla her tür işlev tetikleyicisini taklit eder. Seçenekler işlev türüne göre değişir ancak temel kullanım biçimi şöyledir:
myFunctionName(data, options)
data
parametresi Realtime Database, Cloud Firestore ve PubSub tetikleyicileri için gereklidir ve 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 Gerçek Zamanlı Veritabanı ve Cloud Firestore işlevleri için geçerlidir.
İsteğe bağlı olarak, dosyayı bir değişken olarak kaydedip onunla bir işlevi çağırarak test verilerini yerel bir dosyadan yükleyebilirsiniz:
var data = require('./path/to/testData.json');
myFunction(data);
Cloud Functions kabuğunu yükleyin ve yapılandırın
Bu özelliği kullanmak için firebase-tools
minimum 3.11.0 sürümüne ve firebase-functions
SDK'nın minimum 0.6.2 sürümüne sahip 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 yerel ortamınızda özel yapılandırmanızı (bunu functions
dizininde çalıştırın) almak için komutu çalıştırın:
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ğır
Kabukta HTTPS işlevlerini çağırmak için kullanım, request
NPM modülüyle aynıdır, ancak request
, taklit etmek istediğiniz işlevin adıyla değiştirin. Ö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şlevleri çağırma
HTTPS Callable 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
iletebilirsiniz. Bu bir dize olmalı.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
context.auth
emülasyonu şu anda kullanılamıyor.
Gerçek Zamanlı Veritabanı işlevlerini çağırma
Gerçek Zamanlı Veritabanı işlevlerini yerel olarak çalıştırırken uygun test verilerini sağlamanız gerekir. Bu genellikle onCreate
işlemleri için yeni test verilerinin, onDelete
işlemleri için eski/kaldırılmış verilerin ve hem onUpdate
hem de onWrite
işlevleri için sağlanması anlamına gelir:
# invoke onCreate function
myDatabaseFunction('new_data')
# invoke onDelete function
myDatabaseFunction('old_data')
# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })
before/after
seçeneklerine ek olarak kabuk, yoldaki joker karakterleri taklit etmek için params
seçeneğini de sağlar:
# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})
Varsayılan olarak kabuk, Yönetici (hizmet hesabı) ayrıcalıklarıyla Gerçek Zamanlı Veritabanı işlevlerini çalıştırır. Bunun yerine işlevleri belirli bir son kullanıcı veya kimliği doğrulanmamış bir kullanıcı olarak çalıştırmak için auth
seçeneğini kullanın:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
Firestore işlevlerini çağır
Firestore işlevlerini yerel olarak çalıştırırken uygun test verilerini sağlamanız gerekir. Bu genellikle onCreate
işlemleri için yeni test verilerinin, onDelete
işlemleri için eski/kaldırılmış verilerin ve hem onUpdate
hem de onWrite
işlevleri için sağlanması anlamına gelir. Firestore verilerinin anahtar/değer çiftleri olması gerektiğini unutmayın; bkz. Desteklenen Veri Türleri .
# 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, belge adındaki joker karakterleri taklit etmek için options
nesnesindeki params
alanlarını kullanabilirsiniz:
# 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; bu, bir oluşturma/güncelleme/silme olayını sanki yönetici bir kullanıcı tarafından yapılmış gibi taklit ettiği anlamına gelir.
PubSub işlevlerini çağırın
PubSub işlevleri için, mesaj yükünüzü bir Buffer
örneğine ekleyin ve isteğe bağlı olarak gösterildiği gibi veri niteliklerini 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
Kabukta myAnalyticsFunction()
komutunu çalıştırarak herhangi bir veri olmadan bir Analytics işlevini çağırabilirsiniz. İşlevi test verileriyle çalıştırmak için işlevinizin ihtiyaç duyduğu belirli olay veri alanları için bir değişken tanımlamanız önerilir:
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);
Depolama ve Kimlik Doğrulama işlevlerini çağırma
Depolama ve Kimlik Doğrulama işlevleri için, işlevin içinde görmek istediğiniz test verileriyle yerel işlevi çağırın. Test verileriniz ilgili veri formatlarına uygun olmalıdır:
- Bulut Depolama için:
ObjectMetadata
- Kimlik Doğrulama için:
UserRecord
Yalnızca kodunuzun bağlı olduğu alanları belirtin veya yalnızca işlevi çalıştırmak istiyorsanız hiçbirini belirtin.