Sử dụng Trình mô phỏng tiện ích để đánh giá tiện ích

Trước khi sử dụng trình mô phỏng Extensions với ứng dụng của mình, hãy đảm bảo rằng bạn hiểu quy trình làm việc tổng thể của Firebase Local Emulator Suite, đồng thời bạn cài đặt và định cấu hình Local Emulator Suite cũng như xem xét các lệnh CLI của trình mô phỏng này.

Hướng dẫn này cũng giả định rằng bạn đã quen thuộc với Firebase Extensions và cách sử dụng chúng trong các ứng dụng Firebase.

Tôi có thể làm gì với trình mô phỏng Extensions?

Với trình mô phỏng Extensions, bạn có thể cài đặt và quản lý các tiện ích trong một môi trường cục bộ an toàn, đồng thời hiểu rõ hơn về các chức năng của tiện ích trong khi giảm thiểu chi phí thanh toán. Trình mô phỏng chạy các hàm của tiện ích theo cách cục bộ, bao gồm cả các hàm được kích hoạt bởi sự kiện ở chế độ nền bằng cách sử dụng trình mô phỏng cho Cloud Firestore, Realtime Database, Cloud Storage for Firebase, AuthenticationPub/Sub, cũng như các hàm được kích hoạt bởi Eventarc được triển khai trong Cloud Functions phiên bản 2.

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 duy nhất.

Để chọn dự án cần dùng, trước khi bạn khởi động trình mô phỏng, hãy chạy firebase use trong thư mục làm việc của bạn trong CLI. Hoặc bạn có thể truyền cờ --project đến từng lệnh trình mô phỏng.

Local Emulator Suite hỗ trợ hoạt động mô phỏng các dự án Firebase thực và dự án demo.

Loại dự án Tính năng Sử dụng với trình mô phỏng
Real

Dự án Firebase thực là dự án mà bạn đã tạo và định cấu hình (rất có thể 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 phiên bản cơ sở dữ liệu, vùng lưu trữ, 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, bạn có thể chạy trình mô phỏng cho bất kỳ hoặc tất cả cá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 lưu trữ, 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. Người dùng thường truy cập vào các dự án này thông qua lớp học mã hoặc các hướng dẫn khác.

Mã dự án cho các dự án minh hoạ có tiền tố demo-.

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 các 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 hoạt độ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ễ dàng 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 (sản xuất), thì không có khả năng xảy ra thay đổi dữ liệu, mức sử dụng và việc 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 vào Internet để tải cấu hình SDK xuống.

Cài đặt và đánh giá tiện ích

Việc sử dụng trình mô phỏng Extensions để đánh giá xem một tiện ích có đáp ứng nhu cầu của bạn hay không rất đơn giản.

Giả sử bạn quan tâm đến tiện ích Trigger Email (firestore-send-email), mặc dù quy trình sau đây áp dụng cho mọi tiện ích. Khi chạy với trình mô phỏng cục bộ, Trigger Email sẽ tự động sử dụng trình mô phỏng Cloud FirestoreCloud Functions.

Cách đánh giá tiện ích tại địa phương:

  1. Thêm tiện ích vào tệp kê khai tiện ích cục bộ. Tệp kê khai tiện ích là danh sách các thực thể tiện ích và cấu hình của các thực thể đó.

    firebase ext:install --local firebase/firestore-send-email

    Khi chạy lệnh trên, bạn sẽ được nhắc định cấu hình phiên bản mới nhất của tiện ích firebase/firestore-send-email và lưu cấu hình vào tệp kê khai, nhưng lệnh này sẽ không triển khai cấu hình cho dự án của bạn. Để biết thêm thông tin về vấn đề này, hãy xem bài viết Quản lý cấu hình tiện ích bằng tệp kê khai

  2. Bắt đầu Local Emulator Suite như bình thường.

    firebase emulators:start

Giờ đây, bằng cách sử dụng thực thể tiện ích firestore-send-email có trong tệp kê khai, Local Emulator Suite sẽ tải mã nguồn của tiện ích đó xuống ~/.cache/firebase/extensions. Sau khi tải các nguồn xuống, Local Emulator Suite sẽ bắt đầu và bạn có thể kích hoạt bất kỳ hàm nào được kích hoạt ở chế độ nền của tiện ích cũng như kết nối ứng dụng của bạn với Local Emulator Suite để kiểm thử quá trình tích hợp với ứng dụng.

Bạn có thể dùng Emulator Suite UI để thêm dữ liệu vào bộ sưu tập tài liệu email và thiết lập các tài nguyên phụ trợ khác (nếu cần) theo yêu cầu của tiện ích Trigger Email.

Ngoài ra, đối với các môi trường kiểm thử không tương tác như quy trình tích hợp liên tục, bạn có thể viết một tập lệnh kiểm thử để đánh giá tiện ích. Tập lệnh này sẽ điền dữ liệu Cloud Firestore cần thiết và kích hoạt các hàm, cùng với những bước khác. Sau đó, bạn sẽ gọi Local Emulator Suite để thực thi tập lệnh kiểm thử:

firebase emulators:exec my-test.sh

Sự khác biệt giữa việc kiểm thử bằng trình mô phỏng Extensions và phiên bản phát hành công khai

Trình mô phỏng Extensions cho phép bạn kiểm thử các tiện ích theo cách gần giống với trải nghiệm thực tế. Tuy nhiên, có một số điểm khác biệt so với hành vi trong quá trình phát hành công khai.

Cloud IAM

Bộ công cụ mô phỏng Firebase không cố gắng sao chép hoặc tuân thủ bất kỳ hành vi nào liên quan đến IAM để chạy. Các trình mô phỏng tuân thủ Quy tắc bảo mật của Firebase được cung cấp, nhưng trong những trường hợp thường dùng IAM, chẳng hạn như để đặt tài khoản dịch vụ gọi Cloud Functions và do đó là các quyền, trình mô phỏng không thể định cấu hình và sẽ sử dụng tài khoản có sẵn trên toàn cầu trên máy của nhà phát triển, tương tự như việc chạy trực tiếp một tập lệnh cục bộ.

Hạn chế về loại điều kiện kích hoạt

Hiện tại, Firebase Local Emulator Suite chỉ hỗ trợ các hàm được kích hoạt bằng yêu cầu HTTP, điều kiện kích hoạt sự kiện tuỳ chỉnh Eventarc cho các tiện ích và các hàm được kích hoạt bằng sự kiện trong nền cho Cloud Firestore, Realtime Database, Cloud Storage for Firebase, AuthenticationPub/Sub. Để đánh giá các tiện ích sử dụng các loại hàm được kích hoạt khác, bạn cần cài đặt tiện ích trong một dự án Firebase thử nghiệm.

Bước tiếp theo là gì?