Firebase Data Connect menyediakan emulator lokal untuk pembuatan prototipe end-to-end serta alur continuous integration dan continuous deployment (CI/CD):
- Emulator Data Connect berinteraksi dengan instance database PGLite terintegrasi lokal agar Anda dapat membuat prototipe kueri dan mutasi serta menguji kode klien di lingkungan yang sepenuhnya lokal.
- Emulator Data Connect juga dapat digunakan untuk pekerjaan non-interaktif. Dengan alat ini, Anda dapat menjalankan pengujian otomatis dan cocok untuk digunakan dengan alur kerja CI/CD. Hal ini berguna saat skema Anda stabil dan Anda ingin membuat prototipe dan menguji kode sisi klien.
Panduan ini membahas penginstalan dan penggunaan emulator secara lebih mendetail daripada panduan memulai cepat.
Menginstal emulator Data Connect
Sebelum menginstal Local Emulator Suite untuk menggunakan emulator Data Connect, Anda memerlukan:
- Node.js versi 18.0 atau yang lebih baru.
Menginstal Firebase CLI dan menyiapkan direktori project
Instal Firebase CLI, dengan mengikuti panduan penginstalan. Pastikan untuk memperbarui secara rutin, karena emulator Data Connect sedang dalam pengembangan aktif dengan perbaikan bug dan fitur baru.
Jika Anda belum melakukannya, lakukan inisialisasi direktori kerja saat ini sebagai project Firebase, dengan mengikuti petunjuk untuk menentukan produk yang akan digunakan:
firebase init
Menetapkan atau mengubah konfigurasi Local Emulator Suite
Jika Anda memulai emulator Data Connect dari ekstensi Firebase VS Code, emulator akan diinstal untuk Anda, jika diperlukan.
Anda dapat menggunakan Firebase CLI untuk menginstal emulator secara manual beserta komponen Local Emulator Suite lainnya yang dipilih. Perintah ini akan memulai wizard konfigurasi sehingga Anda dapat memilih emulator yang diminati, mendownload file biner emulator yang sesuai, dan menetapkan port emulator jika port default tidak sesuai.
firebase init emulators
Setelah emulator diinstal, tidak akan ada pemeriksaan update dan download otomatis tambahan yang dilakukan sebelum Anda mengupdate versi Firebase CLI.
Memilih project Firebase
Dalam alur penyiapan, Firebase CLI akan meminta Anda memilih atau membuat project Firebase. Jika Anda memilih project yang sudah ada dan telah disiapkan dengan Data Connect di konsol Firebase, konfigurasi yang Anda pilih di sana akan disarankan.
Menyiapkan emulator
Mengonfigurasi emulator
Menjalankan alur firebase init
akan memandu Anda melalui opsi penyiapan emulator.
Seperti emulator lainnya di Local Emulator Suite, parameter konfigurasi
disimpan dalam file project lokal.
- File
firebase.json
Anda berisi penetapan port emulator.- Kunci
emulators:ui
tidak berlaku untuk emulator Data Connect.
- Kunci
Menggunakan resource Data Connect lokal dan produksi
Jika Anda ingin memastikan tidak memengaruhi resource produksi, tetapkan projectID demo-
atau pastikan kode klien Anda diinstrumentasikan untuk terhubung ke emulator, seperti yang dibahas di bagian selanjutnya.
Memulai emulator
Jika Anda menjalankan emulator secara non-interaktif, misalnya untuk alur kerja
CI/CD, mulailah dengan opsi exec
.
firebase emulators:exec ./path/to/test-script.sh
Jika Anda mengintegrasikan kueri dan mutasi standar dalam kode klien dan
menggunakan emulator khusus untuk menguji klien, Anda dapat menggunakan opsi start
untuk pekerjaan interaktif. Anda juga dapat memulai emulator dari ekstensi VS Code.
firebase emulators:start
Melengkapi kode klien untuk berkomunikasi dengan emulator
Siapkan konfigurasi dalam aplikasi atau class pengujian untuk berinteraksi dengan emulator Data Connect seperti berikut.
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
Menggunakan emulator untuk pengujian dan continuous integration
Menjalankan image Local Emulator Suite dalam container
Penginstalan dan konfigurasi Local Emulator Suite dengan penampung dalam penyiapan CI biasa sangat mudah dilakukan.
Ada beberapa hal yang perlu diperhatikan:
- Biner emulator diinstal dan di-cache di
~/.cache/firebase/emulators/
. Anda dapat menambahkan jalur ini ke konfigurasi cache CI Anda untuk menghindari download berulang. - Jika tidak memiliki file
firebase.json
di repositori, Anda harus menambahkan argumen command line ke perintahemulators:start
atauemulators:exec
untuk menentukan emulator yang harus dimulai. Contoh,--only dataconnect
.
Mengosongkan database di antara pengujian
Untuk mereset lingkungan pengujian di antara pengujian, Firebase merekomendasikan:
- Menulis mutasi khusus untuk menangani hal berikut:
- Dalam penyiapan, isi instance database lokal dengan data awal.
- Dalam penghapusan, hapus data yang diubah dari instance database pasca-pengujian.
Perbedaan emulator Data Connect dengan produksi
Emulator Data Connect menyimulasikan banyak fitur produk sisi server. Namun, ada beberapa pengecualian yang perlu diperhatikan:
- Versi dan konfigurasi mendetail PGLite mungkin berbeda dengan versi instance Cloud SQL produksi Anda.
- Jika Anda menggunakan emulator untuk mengembangkan dengan integrasi
pgvector dan Vertex API Data Connect, panggilan ke Cloud Vertex API dilakukan
secara langsung, bukan melalui integrasi Vertex Cloud SQL. Namun, panggilan ke API produksi masih dilakukan, yang berarti Anda harus menggunakan project Firebase yang sebenarnya, tidak dapat menggunakan project
demo-
, dan biaya Vertex API akan dikenakan.