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

Hubungkan aplikasi Anda ke Realtime Database Emulator

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Sebelum menghubungkan aplikasi Anda ke emulator Realtime Database, pastikan Anda memahami keseluruhan alur kerja Firebase Local Emulator Suite , dan bahwa Anda menginstal dan mengonfigurasi Local Emulator Suite serta meninjau perintah CLI -nya .

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.

Instrumen aplikasi Anda untuk berbicara dengan emulator

Android, platform Apple, dan SDK Web

Siapkan konfigurasi dalam aplikasi atau kelas pengujian Anda untuk berinteraksi dengan Realtime Database sebagai berikut.

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        database.useEmulator("10.0.2.2", 9000);
Cepat
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Web version 9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Web version 8

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

Tidak diperlukan penyiapan tambahan untuk menguji Cloud Functions yang dipicu oleh peristiwa Realtime Database menggunakan emulator. Saat emulator Realtime Database dan Cloud Functions berjalan, keduanya secara otomatis bekerja bersama.

SDK Admin

Firebase Admin SDK secara otomatis terhubung ke emulator Realtime Database saat variabel lingkungan FIREBASE_DATABASE_EMULATOR_HOST disetel:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

Jika kode Anda berjalan di dalam emulator Cloud Functions ID proyek Anda dan konfigurasi lainnya akan secara otomatis disetel saat memanggil initalizeApp .

Jika Anda ingin kode Admin SDK Anda terhubung ke emulator bersama yang berjalan di lingkungan lain, Anda harus menentukan ID proyek yang sama dengan yang Anda tetapkan menggunakan Firebase CLI . Anda dapat meneruskan ID proyek ke initializeApp secara langsung atau menyetel variabel lingkungan GCLOUD_PROJECT .

SDK Admin Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variabel Lingkungan
export GCLOUD_PROJECT="your-project-id"

Hapus database Anda di antara tes

Untuk menghapus Realtime Database di antara aktivitas, Anda dapat menghapus referensi database. Anda dapat menggunakan pendekatan ini sebagai alternatif selain mematikan proses emulator.

Android
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
Cepat
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web version 9

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web version 8

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

Secara alami, kode Anda harus menunggu konfirmasi bahwa flush selesai atau gagal menggunakan fitur penanganan peristiwa asinkron dari platform Anda.

Setelah menerapkan langkah seperti ini, Anda dapat mengurutkan pengujian dan memicu fungsi Anda dengan keyakinan bahwa data lama akan dihapus di antara proses dan Anda menggunakan konfigurasi pengujian baseline yang baru.

Impor dan ekspor data

Database dan Cloud Storage for Firebase emulator memungkinkan Anda mengekspor data dari instance emulator yang sedang berjalan. Tentukan kumpulan data dasar untuk digunakan dalam pengujian unit atau alur kerja integrasi berkelanjutan, lalu ekspor untuk dibagikan di antara tim.

firebase emulators:export ./dir

Dalam pengujian, saat memulai emulator, impor data dasar.

firebase emulators:start --import=./dir

Anda dapat menginstruksikan emulator untuk mengekspor data saat dimatikan, baik dengan menentukan jalur ekspor atau cukup menggunakan jalur yang diteruskan ke tanda --import .

firebase emulators:start --import=./dir --export-on-exit

Opsi impor dan ekspor data ini juga berfungsi dengan perintah firebase emulators:exec . Untuk selengkapnya, lihat referensi perintah emulator .

Visualisasikan aktivitas Aturan Keamanan

Saat Anda bekerja melalui prototipe dan pengujian loop, Anda dapat menggunakan alat visualisasi dan laporan yang disediakan oleh Local Emulator Suite.

Visualisasikan evaluasi Aturan

Saat Anda menambahkan Aturan Keamanan ke prototipe Anda, Anda dapat men-debugnya dengan alat Local Emulator Suite.

Setelah menjalankan serangkaian pengujian, Anda dapat mengakses laporan cakupan pengujian yang menunjukkan bagaimana setiap aturan Anda dievaluasi. Untuk mendapatkan laporan, buat kueri titik akhir yang terbuka di emulator saat sedang berjalan. Untuk versi ramah browser, gunakan URL berikut:

http://localhost:9000/.inspect/coverage?ns=<database_name>

Ini memecah aturan Anda menjadi ekspresi dan subekspresi yang dapat Anda arahkan dengan mouse untuk informasi selengkapnya, termasuk jumlah eksekusi dan nilai yang dikembalikan. Untuk versi JSON mentah dari data ini, sertakan URL berikut dalam kueri Anda:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

Apa selanjutnya?