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, 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, 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 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 ứ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ề chức năng của các 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 cục bộ, bao gồm cả các hàm được kích hoạt sự kiện trong nền bằ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 theo 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 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 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 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, 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 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ố 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 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.

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

Bạn có thể 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.

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

Cách đánh giá một tiện ích trên máy:

  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

    Việc chạy lệnh trên sẽ nhắc bạn đị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 phần Quản lý cấu hình tiện ích bằng tệp kê khai

  2. Khởi động Local Emulator Suite như bình thường.

    firebase emulators:start

Bây giờ, bằng cách sử dụng thực thể tiện ích firestore-send-email được liệt kê 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 và kết nối ứng dụng với Local Emulator Suite để kiểm thử việc tích hợp các hàm đó với ứng dụng.

Bạn có thể sử 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 theo yêu cầu của tiện ích Email kích hoạt.

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 tập lệnh kiểm thử để đánh giá tiện ích. Trong số các bước khác, tiện ích này sẽ điền sẵn dữ liệu Cloud Firestore cần thiết và kích hoạt các hàm. 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à kiểm thử trong môi trường thực tế

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 môi trường phát hành chính thức.

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. Trình mô phỏng tuân thủ các 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 sử dụng IAM, chẳng hạn như để đặt tài khoản dịch vụ gọi Hàm trên đám mây 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 tập lệnh cục bộ.

Giới hạn 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 yêu cầu HTTP, trình 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 sự kiện ở chế độ 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 kích hoạt khác, bạn cần cài đặt tiện ích trong một dự án Firebase kiểm thử.

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