Bulut Fonksiyonlar kabuk test verileri ile fonksiyonlar çağırarak için interaktif kabuğu sağlar. Kabuk her tetik türlerini destekler.
Set up yönetici kimlik bilgileri (isteğe bağlı)
Eğer fonksiyon testleri aracılığıyla Google API'leri veya diğer Firebase API'leri ile etkileşim istiyorsanız Firebase Yönetici SDK , yönetici kimlik bilgilerini kurmak gerekebilir.
- Bulut FireStore ve Gerçek Zamanlı Veri Tabanı tetikleyiciler zaten yeterli kimlik bilgilerine sahip ve ek kuruluma ihtiyaç yoktur .
- Böyle Kimlik Doğrulama ve FCM veya Bulut Translation veya Cloud Speech gibi Google API'leri olarak Firebase API'ler dahil olmak üzere tüm diğer API'ler, kurulum adımları bu bölümde açıklanan gerektirir. Eğer Bulut İşlevleri kabuk veya kullanarak ister bu geçerlidir
firebase emulators:start
.
Taklit fonksiyonlar için yönetici kimlik bilgilerini kurmak için:
- Aç Hizmet Hesapları bölmesini Google Bulut Konsolu.
- App Engine varsayılan hizmet hesabı seçili olduğundan emin olun ve anahtar oluşturun seçmek için sağdaki seçenekler menüsünü kullanın.
- İstendiğinde, anahtar türü için JSON seçin ve Oluştur'u tıklayın.
İndirilen anahtarına noktasına Google varsayılan kimlik bilgilerini 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, fonksiyonları testleri kullanılarak Firebase ve Google API'leri erişebilir Admin SDK . Bir Doğrulama tetiği test ederken Örneğin, taklit fonksiyonu diyebiliriz admin.auth().getUserByEmail(email)
.
Bir Bulut Fonksiyonlar kabuk kullanarak fonksiyonları Serve
Bulut Fonksiyonlar Test verileri ile fonksiyonlar çağırarak için interaktif kabuk ile emüle fonksiyon tetikleyiciler her türlü kabuk. Seçenekler fonksiyon tipine göre değişir, ancak temel kullanım biçimi şöyledir:
myFunctionName(data, options)
data
parametresi Gerçek Zamanlı Veritabanı, Bulut Firestore ve PubSub tetikleyiciler için gereklidir ve diğer tüm fonksiyon türleri için isteğe edilir. Ayrıca, isteğe bağlı options
parametre yalnızca Gerçek Zamanlı Veritabanı ve Bulut Firestore fonksiyonları için geçerlidir.
İsteğe bağlı olarak, bir değişken olarak dosyayı kaydetmeden ve onunla bir fonksiyonu çağıran bir yerel dosyadan test verilerini yükleyebilir:
var data = require('./path/to/testData.json');
myFunction(data);
Yükleme ve Bulut İşlevleri kabuk yapılandırmak
Bu özelliği kullanmak için, firebase-tools
asgari sürüm 3.11.0 sahip olmalı ve firebase-functions
asgari sürüm 0.6.2 olmalıdır SDK. Her iki güncellemek için, aşağıdaki komutları çalıştırın functions/
projeniz için dizine:
npm install --save firebase-functions@latest
npm install -g firebase-tools
Özel fonksiyonları yapılandırma değişkenleri kullanıyorsanız, ilk (içinde bu koşmak özel yapılandırma almak için komutu çalıştırmak functions
yerel ortamda dizine):
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Son olarak, aşağıdaki komutla kabuk çalıştırın:
firebase functions:shell
Çağırma HTTPS fonksiyonlar
Kabukta çağıran HTTPS işlevler için, kullanım aynıdır request
NPM modülü, ancak onların yerini request
taklit etmek istediğiniz fonksiyonun adı ile. Ö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' })
Çağırma HTTPS Callable fonksiyonları
Yerel olarak çağrılabilir fonksiyonlar çağırarak HTTPS zaman, uygun test verileri sağlamak gerekir.
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
İsteğe bağlı olarak, bir geçebildiği Firebase-Instance-ID-token
ikinci parametre olarak. Bu bir dize olmalıdır.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
Emulation context.auth
şu anda kullanılamıyor.
Çağırma Gerçek Zamanlı Veritabanı işlevleri
yerel Gerçek Zamanlı Veri Tabanı fonksiyonlarını çalıştırırken, uygun test verileri sağlamak gerekir. Bu genellikle için yeni test verilerini sağlanması anlamına gelir onCreate
işlemler için eski / kaldırılan verinin onDelete
işlemler ve hem onUpdate
veya onWrite
fonksiyonlar:
# invoke onCreate function
myDatabaseFunction('new_data')
# invoke onDelete function
myDatabaseFunction('old_data')
# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })
Ek olarak before/after
seçenekler, kabuk sağlar params
bir yolda joker alay etmeyi kullanma seçeneğini:
# 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ı Veri Tabanı fonksiyonlarını çalıştırır. Kullanım auth
kimliği doğrulanmamış bir kullanıcı olarak belirli bir son kullanıcı olarak yerine çalışacak işlevlere seçeneği ya:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
Çağır Firestore fonksiyonları
Yerel olarak Firestore fonksiyonlarını çalıştırırken, uygun test verileri sağlamak gerekir. Bu genellikle için yeni test verilerini sağlanması anlamına gelir onCreate
işlemler için eski / kaldırılan verinin onDelete
işlemler ve hem onUpdate
veya onWrite
fonksiyonlar. Firestore verileri anahtar-değer çiftleri olması gerektiğini Not; 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’} })
Ek olarak before/after
alanlarında data
nesnesi, kullanabileceğiniz params
üzerinde alanlar options
bir belge adına sahte joker karakterler itiraz:
# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})
Kabuk her zaman idari bir kullanıcı tarafından yapıldı sanki bir oluşturmak / güncellemek / silme olayı alay araçları yönetici ayrıcalıklarına sahip Firestore fonksiyonlarını çalıştırır.
Çağır PubSub fonksiyonları
PubSub işlevler için bir de mesajınızın yük insert Buffer
örneği ve isteğe bağlı veri özelliklerini eklemek gösterildiği gibi:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
Çağır Analytics fonksiyonları
Bu çalıştırarak bir veri olmadan bir Analitik işlevi çağırabileceği myAnalyticsFunction()
kabuk. Test verileri ile işlevini çalıştırmak için, fonksiyon ihtiyaçları bu özel olay veri alanları için bir değişken tanımlamak için önerilir:
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);
Çağır Depolama ve Auth fonksiyonları
Depolama ve Auth fonksiyonları için, deney verileri ile yerel fonksiyonu çağırmak içinizde fonksiyonun görmek istiyorum söyledi. Kişisel test veri karşılık gelen veri formatları uymalıdır:
- Bulut Depolama için:
ObjectMetadata
- Kimlik İçin:
UserRecord
Yalnızca işlevini çalıştırmak istiyorsanız hiç sadece kod, bağlı olduğu alanlar ya da hiç belirtin.