Trước khi bắt đầu sử dụng 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 mình 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à thử nghiệm
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à thử nghiệm bằng từng trình mô phỏng cũng như kết hợp các trình mô phỏng sao cho phù hợp, tương ứng với những sản phẩm Firebase mà bạn đang sử dụng trong phiên bản chính thức.
Đối với chủ đề này, để giới thiệu quy trình làm việc Local Emulator Suite, hãy 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à Cloud Functions đượ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 trên máy, chu kỳ phát triển bằng Local Emulator Suite thường sẽ có 3 bước:
Tạo nguyên mẫu cho các tính năng một cách tương tác bằng 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 duy nhất để kết nối ứng dụng với trình mô phỏng.
Tự động hoá các bài kiểm thử bằng trình mô phỏng và tập lệnh tuỳ chỉnh.
Khởi động dự án Firebase trên máy
Hãy nhớ cài đặt CLI hoặc cập nhật lên phiên bản mới nhất.
curl -sL firebase.tools | bashNếu bạn chưa thực hiện, hãy khởi động thư mục đang hoạt động hiện tại dưới dạng một dự án Firebase, làm theo dấu 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 initThư mục dự án của bạn hiện sẽ chứa các tệp cấu hình Firebase, một tệp định nghĩa Firebase Security Rules cho cơ sở dữ liệu, một thư mục functions chứa mã Cloud Functions và các tệp hỗ trợ khác.
Tạo nguyên mẫu 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, và giao diện người dùng tích hợp sẵn của Bộ công cụ này là một trong những công cụ tạo nguyên mẫu hữu ích nhất. Việc này giống như việc chạy bảng điều khiển Firebase trên má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ử các luồng dữ liệu khác nhau liên quan đến Cloud Functions, đá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 muốn bắt đầu lại, bạn chỉ cần xoá cơ sở dữ liệu và bắt đầu lại từ đầu với một ý tưởng thiết kế mới.
Tất cả đều có sẵn khi bạn bắt đầu Local Emulator Suite bằng:
firebase emulators:startĐể tạo nguyên mẫu cho ứng dụng giả định, hãy thiết lập và kiểm thử một Cloud Functions 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 dữ liệu vào cơ sở dữ liệu đó trong Emulator Suite UI để kích hoạt hàm.
- Tạo một Cloud Functions được kích hoạt bằng cách ghi cơ sở dữ liệu bằng cách chỉnh sửa tệp
functions/index.jstrong thư mục dự án của bạn. Thay thế nội dung của tệp hiện có bằng đoạn mã sau. Hàm này lắng nghe các thay đổi đối với tài liệu trong tập hợpmessages, chuyển đổi nội dung của trườngoriginalcủa tài liệu thành chữ hoa và lưu trữ kết quả trong trườnguppercasecủa tài liệu đó. - 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 của thiết bị đầu cuối do CLI Firebase xuất ra. Lưu ý trạng thái của các trình mô phỏng có sẵn. Trong trường hợp này, trình mô phỏng Cloud Functions và Cloud Firestore sẽ chạy.
- Trong giao diện người dùng, trên thẻ Firestore > Data (Firestore > Dữ liệu), hãy nhấp vào Start collection (Bắt đầu bộ sưu tập) rồi làm theo lời nhắc để tạo một tài liệu mới trong bộ sưu tập
messages, với tên trường làoriginalvà giá trị làtest. Thao tác này sẽ kích hoạt hàm đám mây của chúng ta. Quan sát thấy một trườnguppercasemới xuất hiện ngay sau đó, được điền sẵn chuỗi "TEST".
- Trên thẻ Firestore > Requests (Firestore > Yêu cầu), hãy kiểm tra các yêu cầu được gửi đến cơ sở dữ liệu mô phỏng của bạn, bao gồm cả tất cả các hoạt động đánh giá Firebase Security Rules được thực hiện trong quá trình thực hiện các yêu cầu đó.
- 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.firestore.document('/messages/{documentId}') .onCreate((snap, context) => { const original = snap.data().original; console.log('Uppercasing', context.params.documentId, original); const uppercase = original.toUpperCase(); return snap.ref.set({uppercase}, {merge: true}); });
Bạn có thể dễ dàng lặp lại giữa mã Cloud Functions 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 mong muốn 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 bộ kiểm thử.
Kết nối ứng dụng với trình mô phỏng
Khi đã đạt được tiến độ tốt với việc tạo nguyên mẫu tương tác và đã thống nhất về 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 của mình 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, hãy sử dụng 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ụ cho nhà phát triển cục bộ. Thao tác 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 nguyên mẫu trên máy.
Để chuyển sang chế độ cho phép ứ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 vào trình mô phỏng Cloud Firestore.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val firestore = Firebase.firestore firestore.useEmulator("10.0.2.2", 8080) firestore.firestoreSettings = firestoreSettings { isPersistenceEnabled = false }
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.useEmulator("10.0.2.2", 8080); FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(false) .build(); firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings settings.host = "127.0.0.1:8080" settings.cacheSettings = MemoryCacheSettings() settings.isSSLEnabled = false Firestore.firestore().settings = settings
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance; // Connects to the Firestore Emulator running on port 8080 db.Settings.Host = "127.0.0.1:8080"; db.Settings.SslEnabled = false;
Web
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, '127.0.0.1', 8080);
Web
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("127.0.0.1", 8080); }
Tự động hoá các bài kiểm thử bằng tập lệnh tuỳ chỉnh
Bây giờ là 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 cho tính năng trong ứng dụng và tính năng này có vẻ hứa hẹn trên tất cả các nền tảng, bạn có thể chuyển sang bước triển khai và thử nghiệm cuối cùng. Đối với quy trình kiểm thử đơn vị và 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 gọi 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 đã biết 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 minh hoạ
- Tìm hiểu chi tiết về các tính năng của trình mô phỏng Realtime Database
- Tìm hiểu chi tiết về các tính năng của trình mô phỏng Cloud Storage for Firebase
- Tìm hiểu chi tiết về các tính năng của trình mô phỏng Cloud Firestore
- Kết nối ứng dụng với trình mô phỏng Cloud Functions
- Đánh giá Firebase Extensions trong khi giảm thiểu chi phí được lập hoá đơ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 loạt video được tuyển chọn và các ví dụ hướng dẫn chi tiết, hãy theo dõi Danh sách phát về chương trình đào tạo 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 (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).