Trước khi bắt đầu với Firebase Local Emulator Suite, hãy đảm bảo bạn đã tạo một dự án Firebase, thiết lập môi trường phát triển, đồng thời chọn và cài đặt SDK Firebase cho nền tảng của bạn theo các chủ đề Bắt đầu sử dụng Firebase cho nền tảng của bạn: Apple, Android hoặc Web.
Tạo nguyên mẫu và kiểm thử
Local Emulator Suite chứa một số trình mô phỏng sản phẩm, như mô tả trong phần Giới thiệu về Firebase Local Emulator Suite. Bạn có thể tạo nguyên mẫu và kiểm thử bằng các trình mô phỏng riêng lẻ cũng như tổ hợp các trình mô phỏng, tuỳ theo ý bạn, tương ứng với sản phẩm Firebase mà bạn đang sử dụng trong quá trình phát hành chính thức.
Đối với chủ đề này, để giới thiệu quy trình công việc Local Emulator Suite, giả sử bạn đang làm việc trên một ứng dụng sử dụng tổ hợp sản phẩm thông thường: cơ sở dữ liệu Firebase và các hàm trên đám mây được kích hoạt bằng các thao tác trên cơ sở dữ liệu đó.
Sau khi bạn khởi chạy dự án Firebase cục bộ, chu kỳ phát triển bằng Local Emulator Suite thường sẽ có 3 bước:
Tính năng nguyên mẫu tương tác với trình mô phỏng và Emulator Suite UI.
Nếu bạn đang sử dụng trình mô phỏng cơ sở dữ liệu hoặc trình mô phỏng Cloud Functions, hãy thực hiện một bước một lần để kết nối ứng dụng với trình mô phỏng.
Tự động hoá kiểm thử bằng trình mô phỏng và tập lệnh tuỳ chỉnh.
Khởi chạy cục bộ một dự án Firebase
Hãy nhớ cài đặt CLI hoặc cập nhật lên phiên bản mới nhất của CLI.
curl -sL firebase.tools | bash
Nếu bạn chưa thực hiện, hãy khởi chạy thư mục đang hoạt động hiện tại dưới dạng dự án Firebase, làm theo lời nhắc trên màn hình để chỉ định rằng bạn đang sử dụng Cloud Functions và Cloud Firestore hoặc Realtime Database:
firebase init
Thư mục dự án của bạn hiện sẽ chứa các tệp cấu hình Firebase, tệp định nghĩa Firebase Security Rules cho cơ sở dữ liệu, thư mục functions
chứa mã hàm trên đám mây và các tệp hỗ trợ khác.
Tạo nguyên mẫu theo cách tương tác
Local Emulator Suite được thiết kế để giúp bạn nhanh chóng tạo nguyên mẫu cho các tính năng mới, giao diện người dùng tích hợp của Suite là một trong những công cụ tạo nguyên mẫu hữu ích nhất. Điều này cũng giống như việc bảng điều khiển Firebase chạy cục bộ.
Khi sử dụng Emulator Suite UI, bạn có thể lặp lại thiết kế của cơ sở dữ liệu, thử nhiều luồng dữ liệu khác nhau liên quan đến các hàm trên đám mây, đánh giá các thay đổi về Quy tắc bảo mật, kiểm tra nhật ký để xác nhận hiệu suất của các dịch vụ phụ trợ, v.v. Sau đó, nếu bạn muốn bắt đầu lại, chỉ cần xoá cơ sở dữ liệu và bắt đầu lại bằng một ý tưởng thiết kế mới.
Tất cả đều có sẵn khi bạn khởi động Local Emulator Suite bằng:
firebase emulators:start
Để tạo nguyên mẫu cho ứng dụng giả định của chúng ta, hãy thiết lập và kiểm thử một hàm đám mây cơ bản để sửa đổi các mục văn bản trong cơ sở dữ liệu, đồng thời tạo và điền sẵn cơ sở dữ liệu đó trong Emulator Suite UI để kích hoạt hàm.
- Tạo một hàm trên đám mây được kích hoạt bằng các hoạt động ghi cơ sở dữ liệu bằng cách chỉnh sửa tệp
functions/index.js
trong thư mục dự án. Thay thế nội dung của tệp hiện có bằng đoạn mã sau. Hàm này theo dõi các thay đổi đối với các nút trong hệ phân cấpmessages
, chuyển đổi nội dung của thuộc tínhoriginal
của nút thành chữ viết hoa và lưu kết quả vào thuộc tínhuppercase
của nút đó. - Chạy Local Emulator Suite bằng
firebase emulators:start
. Trình mô phỏng Cloud Functions và cơ sở dữ liệu khởi động, tự động được định cấu hình để tương tác. - Xem giao diện người dùng trong trình duyệt tại
http://localhost:4000
. Cổng 4000 là cổng mặc định cho giao diện người dùng, nhưng hãy kiểm tra thông báo đầu cuối do CLI Firebase xuất ra. Ghi lại trạng thái của các trình mô phỏng có sẵn. Trong trường hợp của chúng ta, trình mô phỏng Cloud Functions và Realtime Database sẽ chạy.
- Trong giao diện người dùng, trên thẻ Cơ sở dữ liệu theo thời gian thực, hãy sử dụng các chế độ điều khiển của trình chỉnh sửa nội dung cơ sở dữ liệu để tạo một tập hợp các nút có nút
messages
chứa nútmessage1
, theo đó chứa một nút có khoá được đặt thànhoriginal
và giá trị được đặt thànhtest
. Thao tác này sẽ kích hoạt hàm trên đám mây. Hãy quan sát một thuộc tínhuppercase
mới xuất hiện trong thời gian ngắn, với giá trịTEST
.
- Kiểm tra thẻ Logs (Nhật ký) để xác nhận rằng hàm của bạn không gặp lỗi khi cập nhật cơ sở dữ liệu.
const functions = require('firebase-functions/v1'); exports.makeUppercase = functions.database.ref('/messages/{pushId}/original') .onCreate((snapshot, context) => { const original = snapshot.val(); console.log('Uppercasing', context.params.pushId, original); const uppercase = original.toUpperCase(); return snapshot.ref.parent.child('uppercase').set(uppercase); });
Bạn có thể dễ dàng lặp lại giữa mã hàm trên đám mây và các nội dung chỉnh sửa cơ sở dữ liệu tương tác cho đến khi có được luồng dữ liệu mà bạn đang tìm kiếm, mà không cần chạm vào mã truy cập cơ sở dữ liệu trong ứng dụng, biên dịch lại và chạy lại các bộ kiểm thử.
Kết nối ứng dụng với trình mô phỏng
Khi đã tiến hành tạo nguyên mẫu tương tác và quyết định một thiết kế, bạn sẽ sẵn sàng thêm mã truy cập cơ sở dữ liệu vào ứng dụng bằng SDK thích hợp. Bạn sẽ tiếp tục sử dụng thẻ cơ sở dữ liệu và đối với các hàm, thẻ Nhật ký trong Emulator Suite UI để xác nhận rằng hành vi của ứng dụng là chính xác.
Hãy nhớ rằng Local Emulator Suite là một công cụ phát triển cục bộ. Các hoạt động ghi vào cơ sở dữ liệu chính thức sẽ không kích hoạt các hàm mà bạn đang tạo bản minh hoạ cục bộ.
Để chuyển sang yêu cầu ứng dụng ghi vào cơ sở dữ liệu, bạn cần trỏ các lớp kiểm thử hoặc cấu hình trong ứng dụng đến trình mô phỏng Realtime Database.
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); }
Tự động hoá kiểm thử bằng tập lệnh tuỳ chỉnh
Bây giờ, hãy xem bước cuối cùng trong quy trình làm việc tổng thể. Sau khi tạo nguyên mẫu tính năng trong ứng dụng và tính năng đó có vẻ hứa hẹn trên tất cả các nền tảng, bạn có thể chuyển sang triển khai và kiểm thử lần cuối. Đối với quy trình kiểm thử đơn vị và quy trình CI, bạn có thể khởi động trình mô phỏng, chạy kiểm thử theo tập lệnh và tắt trình mô phỏng trong một lệnh duy nhất bằng lệnh exec
:
firebase emulators:exec "./testdir/test.sh"
Khám phá sâu hơn về từng trình mô phỏng
Giờ đây, khi đã nắm được quy trình làm việc cơ bản phía máy khách, bạn có thể tiếp tục tìm hiểu thông tin chi tiết về từng trình mô phỏng trong Bộ công cụ, bao gồm cả cách sử dụng các trình mô phỏng đó để phát triển ứng dụng phía máy chủ:
- Thêm trình mô phỏng Authentication vào quy trình tạo bản mô hình
- Tìm hiểu chuyên sâu về các tính năng của trình mô phỏng Realtime Database
- Tìm hiểu chuyên sâu về các tính năng của trình mô phỏng Cloud Storage for Firebase
- Tìm hiểu chuyên sâu về các tính năng của trình mô phỏng Cloud Firestore
- Kết nối ứng dụng của bạn với trình mô phỏng Cloud Functions
- Đánh giá Firebase Extensions trong khi giảm thiểu chi phí thanh toán bằng trình mô phỏng Extensions
Bước tiếp theo là gì?
Hãy nhớ đọc các chủ đề liên quan đến trình mô phỏng cụ thể được liên kết ở trên. Sau đó:
- Để 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.
- Điều tra 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 (Cloud Firestore), Kiểm thử Quy tắc bảo mật (Realtime Database) và Kiểm thử Quy tắc bảo mật (Cloud Storage for Firebase).