Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Etkileşimli olarak test fonksiyonları

Cloud Functions kabuğu, test verileriyle işlevleri çağırmak 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 Admin SDK aracılığıyla Google API'leri veya diğer Firebase API'leri ile etkileşimde bulunmasını istiyorsanız yönetici kimlik bilgilerini ayarlamanız gerekebilir.

  • Bulut FireStore ve Gerçek Zamanlı Veri Tabanı tetikleyiciler zaten yeterli kimlik bilgilerine sahip ve ek kuruluma ihtiyaç yoktur.
  • 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, işlev kabuğunu veya firebase emulators:start kullanıyor olsanız da firebase emulators:start .

Öykünülmüş işlevler için yönetici kimlik bilgilerini ayarlamak için:

  1. Google Cloud Console'un Hizmet Hesapları bölümünü açın.
  2. App Engine varsayılan hizmet hesabının seçildiğinden emin olun ve Anahtar oluştur'u seçmek için sağdaki seçenekler menüsünü kullanın.
  3. İstendiğinde, anahtar türü için JSON'u seçin ve Oluştur'u tıklayın.
  4. Google varsayılan kimlik bilgilerinizi, indirilen anahtara 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, taklit edilen işlev admin.auth().getUserByEmail(email) .

Cloud Functions kabuğu kullanarak işlevler sunun

Cloud Functions kabuğu, test verileriyle işlevleri çağırmak için etkileşimli bir kabukla her tür işlev tetikleyicisini öykünür. 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ı değişken olarak kaydedip onunla bir işlevi çağırarak yerel bir dosyadan test verilerini yükleyebilirsiniz:

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

Cloud Functions kabuğunu kurun ve yapılandırın

Bu özelliği kullanmak için, firebase-tools minimum 3.11.0 sürümüne sahip olmalı ve firebase-functions SDK'sı minimum 0.6.2 sürümüne sahip olmalıdır. 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şlev yapılandırma değişkenleri kullanıyorsanız, önce yerel ortamınızda özel yapılandırmanızı (bunu functions dizini içinde ç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
firebase functions:shell

Son olarak, kabuğu aşağıdaki komutla çalıştırın:

firebase functions:shell

HTTPS işlevlerini çağırın

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şlevlerini çağırın

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 iletebilirsiniz. Bu bir dizge olmalı.

# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})

context.auth öykünmesi şu anda kullanılamıyor.

Gerçek Zamanlı Veritabanı işlevlerini çağırın

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 verileri, onDelete işlemleri için eski / kaldırılmış veriler ve hem onUpdate hem de onWrite işlevleri için onUpdate onWrite :

# 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, bir yoldaki joker karakterlerle alay etmede kullanılacak params seçeneği sunar:

# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})

Varsayılan olarak, kabuk Gerçek Zamanlı Veritabanı işlevlerini yönetici (hizmet hesabı) ayrıcalıklarıyla çalıştırır. Bunun yerine işlevleri belirli bir son kullanıcı olarak 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ın

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 verileri, onDelete işlemleri için eski / kaldırılmış veriler 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; Desteklenen Veri Türlerine bakın .

# 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, bir belge adındaki joker karakterlerle alay 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 yönetici kullanıcı tarafından yapılmış gibi bir oluşturma / güncelleme / silme olayıyla dalga geçtiğ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 veri niteliklerini 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ğırın

myAnalyticsFunction() çalıştırarak herhangi bir veri olmadan bir Analytics işlevini çağırabilirsiniz. Fonksiyonu test verileriyle çalıştırmak için, fonksiyonunuzun 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:'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);

Storage, Auth ve Crashlytics işlevlerini çağırın

Storage, Auth ve Crashlytics 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ını takip etmelidir:

Yalnızca kodunuzun bağlı olduğu alanları belirtin veya yalnızca işlevi çalıştırmak istiyorsanız hiçbirini belirtin.