Trước khi kết nối ứng dụng của bạn với trình mô phỏng Realtime Database, hãy đảm bảo rằng bạn nắm rõ quy trình công việc tổng thể của Firebase Local Emulator Suite, đồng thời cài đặt và định cấu hình Local Emulator Suite cũng như xem lại các lệnh CLI của nó.
Chọn một dự án Firebase
Firebase Local Emulator Suite mô phỏng các sản phẩm cho một dự án Firebase.
Để chọn dự án cần sử dụng, trước khi khởi động trình mô phỏng, trong CLI, hãy chạy firebase use
trong thư mục đang hoạt động. Bạn cũng có thể chuyển cờ --project
vào từng lệnh của trình mô phỏng.
Local Emulator Suite hỗ trợ mô phỏng các dự án Firebase thực và các dự án minh hoạ.
Loại dự án | Tính năng | Sử dụng với trình mô phỏng |
---|---|---|
Thực |
Dự án Firebase thực tế là dự án bạn đã tạo và định cấu hình (nhiều khả năng là thông qua bảng điều khiển Firebase). Các dự án thực có tài nguyên trực tiếp, chẳng hạn như các thực thể cơ sở dữ liệu, bộ chứa bộ nhớ, hàm hoặc bất kỳ tài nguyên nào khác mà bạn thiết lập cho dự án Firebase đó. |
Khi làm việc với các dự án Firebase thực tế, bạn có thể chạy trình mô phỏng cho bất kỳ hoặc tất cả sản phẩm được hỗ trợ. Đối với mọi sản phẩm mà bạn không mô phỏng, ứng dụng và mã của bạn sẽ tương tác với tài nguyên trực tiếp (phiên bản cơ sở dữ liệu, bộ chứa bộ nhớ, hàm, v.v.). |
Bản trình diễn |
Dự án Firebase minh hoạ không có cấu hình Firebase thực và không có tài nguyên trực tiếp. Bạn thường truy cập vào các dự án này thông qua các lớp học lập trình hoặc các hướng dẫn khác. Mã dự án cho các dự án minh hoạ có tiền tố |
Khi làm việc với các dự án Firebase minh hoạ, ứng dụng và mã của bạn chỉ tương tác với trình mô phỏng. Nếu ứng dụng của bạn cố gắng tương tác với một tài nguyên mà trình mô phỏng không chạy, thì mã đó sẽ không thành công. |
Bạn nên sử dụng các dự án minh hoạ bất cứ khi nào có thể. Các lợi ích bao gồm:
- Dễ thiết lập hơn vì bạn có thể chạy trình mô phỏng mà không cần tạo dự án Firebase
- An toàn hơn vì nếu mã của bạn vô tình gọi các tài nguyên không được mô phỏng (thực tế), thì sẽ không có khả năng thay đổi dữ liệu, mức sử dụng và thông tin thanh toán
- Hỗ trợ tốt hơn khi không có mạng, vì bạn không cần truy cập Internet để tải cấu hình SDK xuống.
Đo lường ứng dụng để giao tiếp với trình mô phỏng
Android, nền tảng Apple và SDK web
Thiết lập cấu hình trong ứng dụng hoặc các lớp kiểm thử để tương tác với Realtime Database như sau.
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val database = Firebase.database database.useEmulator("10.0.2.2", 9000)
Java
// 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);
Swift
// In almost all cases the ns (namespace) is your project ID. let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")
Web
import { getDatabase, connectDatabaseEmulator } from "firebase/database"; const db = getDatabase(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. connectDatabaseEmulator(db, "127.0.0.1", 9000); }
Web
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("127.0.0.1", 9000); }
Bạn không cần thiết lập thêm để kiểm thử các Hàm trên đám mây do các sự kiện trong Cơ sở dữ liệu theo thời gian thực kích hoạt bằng trình mô phỏng. Khi trình mô phỏng Cơ sở dữ liệu theo thời gian thực và Hàm trên đám mây đều đang chạy, các trình mô phỏng này sẽ tự động hoạt động cùng nhau.
Admin SDK giây
Firebase Admin SDK tự động kết nối với trình mô phỏng Realtime Database khi đặt biến môi trường FIREBASE_DATABASE_EMULATOR_HOST
:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
Nếu mã của bạn đang chạy bên trong trình mô phỏng Cloud Functions, mã dự án và cấu hình khác sẽ được đặt tự động khi gọi initializeApp
.
Nếu muốn mã Admin SDK kết nối với một trình mô phỏng dùng chung đang chạy trong một môi trường khác, bạn cần chỉ định cùng một mã dự án mà bạn đã đặt bằng Firebase CLI.
Bạn có thể trực tiếp truyền mã dự án đến initializeApp
hoặc đặt biến môi trường GCLOUD_PROJECT
.
SDK dành cho quản trị viên Node.js
admin.initializeApp({ projectId: "your-project-id" });
Biến môi trường
export GCLOUD_PROJECT="your-project-id"
Xoá cơ sở dữ liệu giữa các lần kiểm thử
Để xoá Realtime Database giữa các hoạt động, bạn có thể xoá tham chiếu cơ sở dữ liệu. Bạn có thể sử dụng phương pháp này thay vì chỉ tắt quy trình trình mô phỏng.
Kotlin+KTX
// With a DatabaseReference, write null to clear the database. database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database. database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
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
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
Đương nhiên, mã của bạn phải chờ xác nhận rằng việc xả nước đã hoàn tất hay không thành công bằng cách sử dụng các tính năng xử lý sự kiện không đồng bộ của nền tảng.
Sau khi triển khai bước như vậy, bạn có thể sắp xếp các chương trình kiểm thử và kích hoạt các hàm của mình mà không phải lo lắng về việc dữ liệu cũ sẽ bị xoá giữa các lần chạy và bạn đang sử dụng cấu hình kiểm thử cơ sở mới.
Nhập và xuất dữ liệu
Trình mô phỏng cơ sở dữ liệu và Cloud Storage for Firebase cho phép bạn xuất dữ liệu từ một thực thể trình mô phỏng đang chạy. Xác định một tập dữ liệu cơ sở để sử dụng trong các quy trình kiểm thử đơn vị hoặc quy trình tích hợp liên tục, sau đó xuất tập dữ liệu đó để chia sẻ với nhóm.
firebase emulators:export ./dir
Trong các chương trình kiểm thử, khi khởi động trình mô phỏng, hãy nhập dữ liệu cơ sở.
firebase emulators:start --import=./dir
Bạn có thể hướng dẫn trình mô phỏng xuất dữ liệu khi tắt máy, bằng cách chỉ định đường dẫn xuất hoặc đơn giản là sử dụng đường dẫn được truyền đến cờ --import
.
firebase emulators:start --import=./dir --export-on-exit
Các tuỳ chọn nhập và xuất dữ liệu này cũng hoạt động với lệnh firebase emulators:exec
. Để biết thêm thông tin, hãy tham khảo tài liệu tham khảo về lệnh trình mô phỏng.
Hình ảnh hoá hoạt động của Quy tắc bảo mật
Khi tìm hiểu nguyên mẫu và vòng lặp kiểm thử, bạn có thể sử dụng các công cụ và báo cáo trực quan do Local Emulator Suite cung cấp.
Trực quan hoá việc đánh giá Quy tắc
Khi thêm Quy tắc bảo mật vào nguyên mẫu, bạn có thể gỡ lỗi các quy tắc đó bằng các công cụ Local Emulator Suite.
Sau khi chạy một bộ kiểm thử, bạn có thể truy cập vào báo cáo phạm vi kiểm thử cho biết cách đánh giá từng quy tắc. Để nhận báo cáo, hãy truy vấn một điểm cuối đã hiển thị trên trình mô phỏng trong khi trình mô phỏng đang chạy. Đối với phiên bản thân thiện với trình duyệt, hãy sử dụng URL sau:
http://localhost:9000/.inspect/coverage?ns=<database_name>
Thao tác này sẽ chia các quy tắc của bạn thành các biểu thức và biểu thức con mà bạn có thể di chuột qua để biết thêm thông tin, bao gồm số lần thực thi và giá trị được trả về. Đối với phiên bản JSON thô của dữ liệu này, hãy đưa URL sau vào truy vấn của bạn:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
Bước tiếp theo là gì?
- Để xem một bộ video được tuyển chọn và các ví dụ chi tiết về cách thực hiện, hãy tham khảo Danh sách phát hướng dẫn về Trình mô phỏng Firebase.
- Tìm hiểu các trường hợp sử dụng nâng cao liên quan đến việc kiểm thử Quy tắc bảo mật và SDK kiểm thử Firebase: Kiểm thử Quy tắc bảo mật (Cơ sở dữ liệu theo thời gian thực).
- Vì các hàm được kích hoạt là một tính năng tích hợp thông thường với Realtime Database, hãy tìm hiểu thêm về trình mô phỏng Cloud Functions for Firebase tại phần Chạy hàm cục bộ.