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

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

Siapkan kredensial admin (opsional)

Jika Anda ingin pengujian fungsi Anda 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 dari 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 Buat .
  4. Setel kredensial default Google Anda untuk menunjuk ke kunci yang diunduh:

    Unix

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

    jendela

    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 Otentikasi, fungsi yang diemulasi dapat memanggil admin.auth().getUserByEmail(email) .

Sajikan fungsi menggunakan shell Cloud Functions

Shell Cloud Functions mengemulasi semua jenis pemicu fungsi dengan shell interaktif untuk menjalankan 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 valid 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 SDK firebase-functions 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 kustom, pertama jalankan perintah untuk mendapatkan konfigurasi kustom 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 NPM request , 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 HTTPS Callable

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

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

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

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

Emulasi context.auth saat ini tidak tersedia.

Aktifkan fungsi Realtime Database

Saat menjalankan fungsi Realtime Database secara lokal, Anda harus menyediakan data pengujian yang sesuai. Ini biasanya berarti menyediakan data pengujian baru untuk operasi onCreate , data lama/yang 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 mengejek 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'}})

Aktifkan fungsi Firestore

Saat menjalankan fungsi Firestore secara lokal, Anda harus menyediakan data pengujian yang sesuai. Ini biasanya 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 pasangan nilai kunci; 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 objek data , Anda dapat menggunakan bidang params pada objek options untuk meniru karakter pengganti 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 administratif, yang berarti ia mengolok-olok acara buat/perbarui/hapus seolah-olah itu dilakukan oleh pengguna administratif.

Aktifkan fungsi PubSub

Untuk fungsi PubSub, masukkan muatan 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 uji, disarankan untuk menentukan variabel untuk bidang data peristiwa tertentu yang dibutuhkan 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 Autentikasi

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

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