Gunakan Emulator Ekstensi untuk mengevaluasi ekstensi

Sebelum menggunakan emulator Extensions dengan aplikasi Anda, pastikan Anda memahami keseluruhan alur kerja Firebase Local Emulator Suite , dan bahwa Anda menginstal dan mengonfigurasi Local Emulator Suite serta meninjau perintah CLI -nya .

Panduan ini juga mengasumsikan Anda sudah familiar dengan Firebase Extensions dan cara menggunakannya di aplikasi Firebase Anda .

Apa yang dapat saya lakukan dengan emulator Ekstensi?

Dengan emulator Ekstensi, Anda dapat menginstal dan mengelola ekstensi di lingkungan lokal yang aman dan lebih memahami kemampuannya sambil meminimalkan biaya penagihan. Emulator menjalankan fungsi ekstensi Anda secara lokal, termasuk fungsi yang dipicu peristiwa latar belakang menggunakan emulator untuk Cloud Firestore, Realtime Database, Cloud Storage, Authentication, dan Pub/Sub.

Pilih proyek Firebase

Firebase Local Emulator Suite mengemulasi produk untuk satu project Firebase.

Untuk memilih proyek yang akan digunakan, sebelum Anda memulai emulator, di CLI jalankan firebase use di direktori kerja Anda. Atau, Anda dapat meneruskan flag --project ke setiap perintah emulator.

Suite Emulator Lokal mendukung emulasi proyek Firebase nyata dan proyek demo .

Jenis proyek Fitur Gunakan dengan emulator
Nyata

Proyek Firebase yang sebenarnya adalah proyek yang Anda buat dan konfigurasikan (kemungkinan besar melalui konsol Firebase).

Proyek nyata memiliki sumber daya langsung, seperti instance database, keranjang penyimpanan, fungsi, atau sumber daya lain yang Anda siapkan untuk proyek Firebase tersebut.

Saat bekerja dengan proyek Firebase yang sebenarnya, Anda dapat menjalankan emulator untuk salah satu atau semua produk yang didukung.

Untuk produk apa pun yang tidak Anda tiru, aplikasi dan kode Anda akan berinteraksi dengan sumber daya langsung (instance database, keranjang penyimpanan, fungsi, dll.).

Demo

Proyek demo Firebase tidak memiliki konfigurasi Firebase nyata dan tidak ada sumber daya langsung. Proyek-proyek ini biasanya diakses melalui codelabs atau tutorial lainnya.

ID proyek untuk proyek demo memiliki awalan demo- .

Saat bekerja dengan proyek demo Firebase, aplikasi dan kode Anda hanya berinteraksi dengan emulator . Jika aplikasi Anda mencoba berinteraksi dengan sumber daya yang emulatornya tidak berjalan, kode itu akan gagal.

Kami menyarankan Anda menggunakan proyek demo sedapat mungkin. Manfaat meliputi:

  • Penyiapan lebih mudah, karena Anda dapat menjalankan emulator tanpa pernah membuat proyek Firebase
  • Keamanan yang lebih kuat, karena jika kode Anda secara tidak sengaja memanggil sumber daya (produksi) yang tidak ditiru, tidak ada kemungkinan perubahan data, penggunaan, dan penagihan
  • Dukungan offline yang lebih baik, karena tidak perlu mengakses internet untuk mengunduh konfigurasi SDK Anda.

Instal dan evaluasi ekstensi

Menggunakan emulator Ekstensi untuk mengevaluasi apakah ekstensi memenuhi kebutuhan Anda sangatlah mudah.

Anggap Anda tertarik dengan ekstensi Trigger Email ( firestore-send-email ) , meskipun alur kerja berikut mencakup ekstensi apa pun. Saat dijalankan dengan emulator lokal, Trigger Email akan secara otomatis menggunakan emulator Cloud Firestore dan Cloud Functions.

Untuk mengevaluasi ekstensi secara lokal:

  1. Tambahkan ekstensi ke manifes ekstensi lokal. Manifes ekstensi adalah daftar instance ekstensi dan konfigurasinya.

    firebase ext:install --local firebase/firestore-send-email

    Menjalankan perintah di atas akan meminta Anda untuk mengonfigurasi versi terbaru firebase/firestore-send-email dan menyimpan konfigurasi ke manifes, tetapi tidak akan menerapkan konfigurasi ke proyek Anda. Untuk lebih lanjut tentang ini, lihat Mengelola konfigurasi ekstensi dengan manifes

  2. Mulai Suite Emulator Lokal seperti biasa.

    firebase emulators:start

Sekarang, dengan menggunakan instance ekstensi firestore-send-email tercantum dalam manifes Anda, Local Emulator Suite akan mengunduh kode sumber ekstensi tersebut ke ~/.cache/firebase/extensions . Setelah sumber diunduh, Rangkaian Emulator Lokal akan dimulai dan Anda akan dapat memicu salah satu fungsi yang dipicu latar belakang ekstensi dan menghubungkan aplikasi Anda ke Suite Emulator Lokal untuk menguji integrasinya dengan aplikasi Anda.

Anda dapat menggunakan Emulator Suite UI untuk menambahkan data ke kumpulan dokumen email dan menyiapkan sumber daya backend lainnya, seperti yang diperlukan oleh ekstensi Email Pemicu.

Atau, untuk lingkungan pengujian non-interaktif seperti alur kerja integrasi berkelanjutan, Anda dapat menulis skrip pengujian untuk mengevaluasi ekstensi yang, di antara langkah-langkah lainnya, mengisi data Cloud Firestore yang diperlukan dan memicu fungsi. Anda kemudian akan memanggil Suite Emulator Lokal untuk menjalankan skrip pengujian Anda:

firebase emulators:exec my-test.sh

Bagaimana pengujian dengan emulator Ekstensi berbeda dari produksi

Emulator Extensions memungkinkan Anda menguji ekstensi dengan cara yang sangat cocok dengan pengalaman produksi. Namun, ada beberapa perbedaan dari perilaku produksi.

Cloud IAM

Firebase Emulator Suite tidak mencoba mereplikasi atau menghormati perilaku terkait IAM apa pun untuk dijalankan. Emulator mematuhi Aturan Keamanan Firebase yang disediakan, tetapi dalam situasi di mana IAM biasanya digunakan, misalnya untuk mengatur Cloud Functions yang memanggil akun layanan dan dengan demikian izin, emulator tidak dapat dikonfigurasi dan akan menggunakan akun yang tersedia secara global di mesin pengembang Anda, mirip dengan menjalankan skrip lokal secara langsung.

Pemicu pembatasan jenis

Saat ini, Firebase Local Emulator Suite hanya mendukung fungsi yang dipicu permintaan HTTP dan fungsi yang dipicu peristiwa latar belakang untuk Cloud Firestore, Realtime Database, Cloud Storage, Authentication, dan Pub/Sub. Untuk mengevaluasi ekstensi yang menggunakan jenis fungsi terpicu lainnya, Anda perlu menginstal ekstensi di proyek Firebase pengujian.

Apa selanjutnya?