Check out what’s new from Firebase at Google I/O 2022. Learn more

İşlevleri etkileşimli olarak test edin

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:

  1. Hizmet Hesapları bölmesini Google Bulut Konsolu.
  2. 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.
  3. İstendiğinde, anahtar türü için JSON seçin ve Oluştur'u tıklayın.
  4. İ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:

Yalnızca işlevini çalıştırmak istiyorsanız hiç sadece kod, bağlı olduğu alanlar ya da hiç belirtin.