Firebase CLI meliputi emulator Cloud Functions yang dapat mengemulasi jenis fungsi berikut:
- Fungsi HTTPS
- Fungsi callable
- Fungsi latar belakang yang dipicu dari Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, dan Cloud Pub/Sub.
Anda dapat menjalankan fungsi secara lokal untuk mengujinya sebelum men-deploy ke produksi.
Menginstal Firebase CLI
Untuk menggunakan emulator Cloud Functions, instal Firebase CLI terlebih dahulu:
npm install -g firebase-tools
Untuk menggunakan emulator lokal, Cloud Functions Anda harus bergantung pada:
firebase-admin
versi8.0.0
atau lebih baru.firebase-functions
versi3.0.0
atau lebih baru.
Menyiapkan 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 telah memiliki kredensial 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 dalam bagian ini. Hal ini berlaku baik jika Anda menggunakan shell Cloud Functions maupun
firebase emulators:start
.
Agar dapat menyiapkan kredensial admin untuk fungsi yang diemulasi:
- Buka panel Service Accounts di Google Cloud Console.
- Pastikan App Engine default service account dipilih, lalu gunakan menu opsi di sebelah kanan untuk memilih Create key.
- Saat diminta, pilih JSON untuk jenis kunci, lalu klik Create.
Atur agar kredensial default Google Anda mengarah ke kunci yang telah didownload:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Setelah menyelesaikan langkah-langkah ini, pengujian fungsi Anda dapat mengakses Firebase API dan Google API menggunakan Admin SDK. Misalnya, saat menguji pemicu Authentication, fungsi yang diemulasi dapat memanggil admin.auth().getUserByEmail(email)
.
Menyiapkan konfigurasi fungsi (opsional)
Jika Anda menggunakan variabel konfigurasi fungsi kustom, jalankan perintah terlebih dahulu untuk mendapatkan konfigurasi kustom (jalankan ini 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
Menjalankan emulator suite
Untuk menjalankan emulator Cloud Functions, gunakan perintah emulators:start
:
firebase emulators:start
Perintah emulators:start
akan memulai emulator untuk Cloud Functions, Cloud Firestore, Realtime Database, dan Firebase Hosting berdasarkan produk yang telah Anda inisialisasi dalam project lokal Anda menggunakan firebase init
. Jika ingin memulai emulator tertentu, gunakan flag --only
:
firebase emulators:start --only functions
Jika ingin menjalankan rangkaian pengujian atau skrip pengujian setelah emulator dimulai, gunakan perintah emulators:exec
:
firebase emulators:exec "./my-test.sh"
Melengkapi aplikasi untuk berkomunikasi dengan emulator
Untuk melengkapi aplikasi agar dapat berinteraksi dengan emulator, Anda mungkin perlu melakukan beberapa konfigurasi tambahan.
Melengkapi aplikasi untuk fungsi callable
Jika prototipe dan aktivitas pengujian Anda melibatkan fungsi backend callable, konfigurasikan interaksi dengan emulator Cloud Functions for Firebase seperti ini:
Android
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")
Web versi 9
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web versi 8
firebase.functions().useEmulator("localhost", 5001);
Melengkapi aplikasi untuk emulasi fungsi HTTPS
Setiap fungsi HTTPS dalam kode Anda akan disalurkan dari emulator lokal menggunakan format URL berikut:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
Misalnya, fungsi helloWorld
sederhana dengan port host dan region default akan disalurkan di:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Melengkapi aplikasi untuk emulasi fungsi yang dipicu latar belakang
Emulator Cloud Functions mendukung fungsi yang dipicu latar belakang dari sumber berikut:
- Emulator Realtime Database
- Emulator Cloud Firestore
- Emulator Authentication
- Emulator Pub/Sub
Untuk memicu peristiwa latar belakang, hubungkan aplikasi atau kode pengujian ke emulator menggunakan SDK untuk platform Anda.
Interaksi dengan layanan lain
Emulator Suite meliputi beberapa emulator, sehingga memungkinkan pengujian interaksi lintas produk.
Cloud Firestore
Jika Anda memiliki fungsi yang menggunakan Firebase Admin SDK untuk menulis ke Cloud Firestore, penulisan ini akan dikirim ke emulator Cloud Firestore jika emulator tersebut sedang berjalan. Fungsi selanjutnya yang dipicu oleh penulisan tersebut akan dijalankan di emulator Cloud Functions.
Cloud Storage
Jika Anda memiliki fungsi yang menggunakan Firebase Admin SDK (versi 9.7.0 atau yang lebih baru) untuk menulis ke Cloud Storage, penulisan ini akan dikirim ke emulator Cloud Storage jika emulator tersebut sedang berjalan. Fungsi selanjutnya yang dipicu oleh penulisan tersebut akan dijalankan di emulator Cloud Functions.
Firebase Authentication
Jika Anda memiliki fungsi yang menggunakan Firebase Admin SDK (versi 9.3.0 atau yang lebih baru) untuk menulis ke Firebase Authentication, penulisan ini akan dikirim ke emulator Auth jika emulator tersebut sedang berjalan. Fungsi selanjutnya yang dipicu oleh penulisan tersebut akan dijalankan di emulator Cloud Functions.
Firebase Hosting
Jika Anda menggunakan Cloud Functions untuk membuat konten dinamis untuk Firebase Hosting, firebase emulators:start
akan menggunakan fungsi HTTP lokal Anda sebagai proxy untuk hosting.
Logging
Emulator mengalirkan log dari fungsi ke jendela terminal tempat fungsi tersebut dijalankan. Emulator menampilkan semua output dari pernyataan console.log()
, console.info()
, console.error()
, dan console.warn()
dalam fungsi Anda.
Langkah Berikutnya
Untuk contoh lengkap penggunaan Emulator Suite Firebase, lihat contoh panduan memulai pengujian.