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

Jalankan fungsi secara lokal

Firebase CLI menyertakan emulator Cloud Functions yang dapat mengemulasi jenis fungsi berikut:

  • Fungsi HTTPS
  • Fungsi yang dapat dipanggil
  • Fungsi latar belakang dipicu dari Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, dan Cloud Pub/Sub.

Anda dapat menjalankan fungsi secara lokal untuk mengujinya sebelum menerapkan ke produksi.

Instal 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 versi 8.0.0 atau lebih tinggi.
  • firebase-functions versi 3.0.0 atau lebih tinggi.

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 emulators:start
    

    jendela

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    firebase emulators:start
    

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

Mengatur konfigurasi fungsi (opsional)

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

Jalankan rangkaian emulator

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 di proyek lokal Anda menggunakan firebase init . Jika Anda ingin memulai emulator tertentu, gunakan flag --only :

firebase emulators:start --only functions

Jika Anda ingin menjalankan rangkaian pengujian atau skrip pengujian setelah emulator dimulai, gunakan perintah emulators:exec :

firebase emulators:exec "./my-test.sh"

Instrumen aplikasi Anda untuk berbicara dengan emulator

Untuk melengkapi aplikasi Anda agar dapat berinteraksi dengan emulator, Anda mungkin perlu melakukan beberapa konfigurasi tambahan.

Instrumen aplikasi Anda untuk fungsi yang dapat dipanggil

Jika prototipe dan aktivitas pengujian Anda melibatkan fungsi backend yang dapat dipanggil , 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);
Cepat
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

Instrumen aplikasi Anda untuk emulasi fungsi HTTPS

Setiap fungsi HTTPS dalam kode Anda akan disajikan dari emulator lokal menggunakan format URL berikut:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Misalnya fungsi helloWorld sederhana dengan port dan wilayah host default akan disajikan di:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Instrumen aplikasi Anda untuk emulasi fungsi yang dipicu latar belakang

Emulator Cloud Functions mendukung fungsi yang dipicu latar belakang dari sumber berikut:

  • Emulator Basis Data Waktu Nyata
  • Emulator Cloud Firestore
  • Emulator otentikasi
  • Emulator Pub/Sub

Untuk memicu peristiwa latar belakang, ubah sumber daya back-end menggunakan UI Emulator Suite, atau dengan menghubungkan aplikasi atau kode pengujian ke emulator menggunakan SDK untuk platform Anda.

Pengendali uji untuk acara khusus yang dikeluarkan oleh Ekstensi

Untuk fungsi yang Anda terapkan untuk menangani peristiwa kustom Firebase Extensions dengan Cloud Functions v2, emulator Cloud Functions berpasangan dengan emulator Eventarc untuk mendukung pemicu Eventarc .

Untuk menguji pengendali peristiwa kustom untuk ekstensi yang memancarkan peristiwa, Anda harus menginstal Cloud Functions dan emulator Eventarc.

Runtime Cloud Functions menyetel variabel lingkungan EVENTARC_EMULATOR ke localhost:9299 dalam proses saat ini jika emulator Eventarc sedang berjalan. Firebase Admin SDKs secara otomatis terhubung ke emulator Eventarc saat variabel lingkungan EVENTARC_EMULATOR disetel. Anda dapat memodifikasi port default seperti yang dibahas di bawah Configure Local Emulator Suite .

Saat variabel lingkungan dikonfigurasi dengan benar, Firebase Admin SDK secara otomatis mengirimkan peristiwa ke emulator Eventarc. Pada gilirannya, emulator Eventarc melakukan panggilan kembali ke emulator Cloud Functions untuk memicu penangan yang terdaftar.

Anda dapat memeriksa log Fungsi di UI Emulator Suite untuk detail tentang eksekusi handler.

Interaksi dengan layanan lain

Rangkaian emulator mencakup beberapa emulator, yang 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 sedang berjalan. Jika fungsi lebih lanjut dipicu oleh penulisan tersebut, fungsi tersebut akan dijalankan di emulator Cloud Functions.

Penyimpanan awan

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 sedang berjalan. Jika fungsi lebih lanjut dipicu oleh penulisan tersebut, fungsi tersebut akan dijalankan di emulator Cloud Functions.

Otentikasi Firebase

Jika Anda memiliki fungsi yang menggunakan Firebase Admin SDK (versi 9.3.0 atau lebih tinggi) untuk menulis ke Firebase Authentication, penulisan ini akan dikirim ke emulator Auth jika sedang berjalan. Jika fungsi lebih lanjut dipicu oleh penulisan tersebut, fungsi tersebut akan dijalankan di emulator Cloud Functions.

Hosting Firebase

Jika Anda menggunakan Cloud Functions untuk menghasilkan konten dinamis untuk Firebase Hosting , firebase emulators:start menggunakan fungsi HTTP lokal Anda sebagai proxy untuk hosting.

Masuk

Emulator mengalirkan log dari fungsi Anda ke jendela terminal tempat mereka dijalankan. Ini menampilkan semua output dari console.log() , console.info() , console.error() , dan console.warn() pernyataan di dalam fungsi Anda.

Langkah selanjutnya

Untuk contoh lengkap penggunaan suite emulator Firebase, lihat contoh panduan memulai pengujian .