Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Uji fungsi secara interaktif

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Shell Cloud Functions menyediakan shell interaktif untuk menjalankan fungsi dengan data pengujian. Shell mendukung semua jenis pemicu.

Siapkan kredensial admin (opsional)

Jika ingin pengujian fungsi berinteraksi dengan Google API atau Firebase API lainnya melalui Firebase Admin SDK , Anda mungkin perlu menyiapkan kredensial admin.

  • Pemicu Cloud Firestore dan Realtime Database sudah memiliki kredensial yang memadai, dan tidak memerlukan penyiapan tambahan.
  • Semua API lainnya, termasuk Firebase API seperti Authentication dan FCM atau Google API seperti Cloud Translation atau Cloud Speech, memerlukan langkah penyiapan yang dijelaskan di bagian ini. Ini berlaku baik Anda menggunakan shell Cloud Functions atau firebase emulators:start .

Untuk menyiapkan kredensial admin untuk fungsi yang diemulasi:

  1. Buka panel Akun Layanan di Google Cloud Console.
  2. Pastikan akun layanan default App Engine dipilih, dan gunakan menu opsi di sebelah kanan untuk memilih Buat kunci .
  3. Saat diminta, pilih JSON untuk jenis kunci, dan klik Create .
  4. Setel kredensial default Google Anda untuk mengarah ke kunci yang diunduh:

    Unix

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    firebase functions:shell
    

    Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase functions:shell
    

Setelah menyelesaikan langkah-langkah ini, pengujian fungsi Anda dapat mengakses Firebase dan Google API menggunakan Admin SDK . Misalnya, saat menguji pemicu Autentikasi, fungsi yang diemulasi dapat memanggil admin.auth().getUserByEmail(email) .

Sajikan fungsi menggunakan shell Cloud Functions

Shell Cloud Functions mengemulasikan semua jenis pemicu fungsi dengan shell interaktif untuk memanggil fungsi dengan data pengujian. Opsi bervariasi menurut jenis fungsi, tetapi format penggunaan dasarnya adalah:

myFunctionName(data, options)

Parameter data diperlukan untuk pemicu Realtime Database, Cloud Firestore, dan PubSub, dan opsional untuk semua jenis fungsi lainnya. Selain itu, parameter options opsional hanya berlaku untuk fungsi Realtime Database dan Cloud Firestore.

Secara opsional, Anda dapat memuat data pengujian dari file lokal dengan menyimpan file sebagai variabel dan menjalankan fungsi dengannya:

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

Instal dan konfigurasikan shell Cloud Functions

Untuk menggunakan fitur ini, firebase-tools harus memiliki versi minimum 3.11.0, dan firebase-functions SDK harus memiliki versi minimum 0.6.2. Untuk memperbarui keduanya, jalankan perintah berikut di direktori functions/ untuk proyek Anda:

npm install --save firebase-functions@latest
npm install -g firebase-tools

Jika Anda menggunakan variabel konfigurasi fungsi khusus, pertama-tama jalankan perintah untuk mendapatkan konfigurasi khusus Anda (jalankan ini di dalam direktori functions ) di lingkungan lokal Anda:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Terakhir, jalankan shell dengan perintah berikut:

firebase functions:shell

Aktifkan fungsi HTTPS

Untuk menjalankan fungsi HTTPS di shell, penggunaannya sama dengan modul request NPM, tetapi ganti request dengan nama fungsi yang ingin Anda tiru. Sebagai contoh:

# 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' })

Aktifkan fungsi Callable HTTPS

Saat menjalankan fungsi Callable HTTPS secara lokal, Anda harus menyediakan data pengujian yang sesuai.

# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})

Secara opsional, Anda dapat meneruskan Firebase-Instance-ID-token sebagai parameter kedua. Ini harus berupa string.

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

Emulasi context.auth saat ini tidak tersedia.

Memanggil fungsi Realtime Database

Saat menjalankan fungsi Realtime Database secara lokal, Anda harus menyediakan data pengujian yang sesuai. Ini umumnya berarti menyediakan data pengujian baru untuk operasi onCreate , data lama/dihapus untuk operasi onDelete , dan keduanya untuk fungsi onUpdate atau 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' })

Selain opsi before/after , shell menyediakan opsi params untuk digunakan dalam mocking wildcard di jalur:

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

Secara default, shell menjalankan fungsi Realtime Database dengan hak istimewa admin (akun layanan). Gunakan opsi auth untuk menjalankan fungsi sebagai pengguna akhir tertentu, atau sebagai pengguna yang tidak diautentikasi:

# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})

Memanggil fungsi Firestore

Saat menjalankan fungsi Firestore secara lokal, Anda harus menyediakan data pengujian yang sesuai. Ini umumnya berarti menyediakan data pengujian baru untuk operasi onCreate , data lama/yang dihapus untuk operasi onDelete , dan keduanya untuk fungsi onUpdate atau onWrite . Perhatikan bahwa data Firestore harus berupa key-value pair; lihat Jenis Data yang Didukung .

# invoke onCreate function
myFirestoreFunction({foo: ‘new’})

# invoke onDelete function
myFirestoreFunction({foo: ‘old’})

# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })

Selain bidang before/after dari objek data , Anda bisa menggunakan bidang params pada objek options untuk menirukan wildcard dalam nama dokumen:

# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})

Shell selalu menjalankan fungsi Firestore dengan hak akses administratif, yang berarti mengolok-olok acara buat/perbarui/hapus seolah-olah dilakukan oleh pengguna administratif.

Aktifkan fungsi PubSub

Untuk fungsi PubSub, masukkan payload pesan Anda dalam instance Buffer dan tambahkan atribut data opsional seperti yang ditunjukkan:

// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})

Aktifkan fungsi Analytics

Anda dapat memanggil fungsi Analytics tanpa data apa pun dengan menjalankan myAnalyticsFunction() di shell. Untuk menjalankan fungsi dengan data pengujian, sebaiknya tentukan variabel untuk bidang data peristiwa tertentu yang diperlukan fungsi Anda:

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);

Aktifkan fungsi Penyimpanan dan Otentikasi

Untuk fungsi Storage dan Auth, aktifkan fungsi lokal dengan data uji yang ingin Anda lihat di dalam fungsi. Data pengujian Anda harus mengikuti format data yang sesuai:

Tentukan hanya bidang yang bergantung pada kode Anda, atau tidak sama sekali jika Anda hanya ingin menjalankan fungsi.