Giao diện dòng lệnh (CLI) của Firebase bao gồm một trình mô phỏng Cloud Functions có thể mô phỏng các loại hàm sau:
- Hàm HTTPS
- Hàm có thể gọi
- Hàm hàng đợi tác vụ
- Các hàm nền được kích hoạt từ Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, các cảnh báo được hỗ trợ của Firebase, và Cloud Pub/Sub.
Bạn có thể chạy các hàm trên máy để kiểm thử trước khi triển khai cho môi trường thực tế.
Cài đặt Giao diện dòng lệnh (CLI) của Firebase
Để sử dụng trình mô phỏng Cloud Functions, trước tiên, hãy cài đặt Giao diện dòng lệnh (CLI) của Firebase:
npm install -g firebase-tools
Để sử dụng trình mô phỏng cục bộ, Cloud Functions của bạn phải phụ thuộc vào:
firebase-adminphiên bản8.0.0trở lên.firebase-functionsphiên bản3.0.0trở lên.
Thiết lập thông tin đăng nhập của quản trị viên (không bắt buộc)
Nếu muốn các chương trình kiểm tra về mặt hoạt động tương tác với API của Google hoặc các API Firebase khác thông qua SDK của Firebase dành cho quản trị viên, bạn có thể cần thiết lập thông tin đăng nhập của quản trị viên.
- Trình kích hoạt Cloud Firestore và Realtime Database đã có đủ thông tin xác thực và không cần thiết lập thêm.
- Tất cả các API khác, bao gồm cả API Firebase như Authentication và FCM hoặc API Google như Cloud Translation hoặc Cloud Speech, đều yêu cầu các bước thiết lập được mô tả trong phần này. Điều này áp dụng cho dù bạn đang sử dụng shell Cloud Functions hay
firebase emulators:start.
Cách thiết lập thông tin xác thực của quản trị viên cho các hàm được mô phỏng:
- Mở ngăn Tài khoản dịch vụ của bảng điều khiển Google Cloud.
- Đảm bảo bạn đã chọn tài khoản dịch vụ mặc định App Engine và sử dụng trình đơn tuỳ chọn ở bên phải để chọn Tạo khoá.
- Khi được nhắc, hãy chọn JSON cho loại khoá, rồi nhấp vào Tạo.
Đặt thông tin xác thực mặc định của Google để trỏ đến khoá đã tải xuống:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
Sau khi hoàn tất các bước này, các chương trình kiểm thử hàm của bạn có thể truy cập vào Firebase và API của Google bằng SDK quản trị. Ví dụ: khi kiểm thử một trình kích hoạt Authentication, hàm được mô phỏng có thể gọi admin.auth().getUserByEmail(email).
Thiết lập cấu hình hàm (không bắt buộc)
Nếu bạn đang sử dụng các biến cấu hình hàm tuỳ chỉnh, trước tiên, hãy chạy lệnh để lấy cấu hình tuỳ chỉnh (chạy lệnh này trong thư mục functions) trong môi trường cục bộ:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
Chạy bộ công cụ mô phỏng
Để chạy trình mô phỏng Cloud Functions, hãy dùng lệnh emulators:start:
firebase emulators:start
Lệnh emulators:start sẽ khởi động trình mô phỏng cho Cloud Functions, Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Lưu trữ Firebase dựa trên các sản phẩm bạn đã khởi chạy trong dự án cục bộ bằng firebase
init. Nếu bạn muốn khởi động một trình mô phỏng cụ thể, hãy sử dụng cờ --only:
firebase emulators:start --only functions
Nếu bạn muốn chạy một bộ kiểm thử hoặc tập lệnh kiểm thử sau khi trình mô phỏng đã khởi động, hãy sử dụng lệnh emulators:exec:
firebase emulators:exec "./my-test.sh"
Sau khi khởi động, trình mô phỏng sẽ truyền trực tuyến nhật ký từ các hàm của bạn đến cửa sổ dòng lệnh nơi trình mô phỏng chạy. Công cụ này hiển thị tất cả kết quả từ các câu lệnh console.log(), console.info(), console.error() và console.warn() bên trong các hàm của bạn.
Xin lưu ý rằng theo mặc định, kết quả của trình mô phỏng sẽ mô phỏng việc triển khai các hàm trong một khu vực cụ thể (us-central1) có thể không khớp với khu vực mặc định triển khai thực tế trong môi trường thực tế. Hãy xem vị trí Cloud Functions để biết thêm thông tin về các khu vực.
Đo lường ứng dụng để giao tiếp với trình mô phỏng
Để đo lường ứng dụng của bạn nhằm tương tác với trình mô phỏng, bạn có thể cần phải thực hiện một số cấu hình bổ sung.
Đo lường ứng dụng cho các hàm có thể gọi
Nếu các hoạt động tạo nguyên mẫu và kiểm thử của bạn liên quan đến các hàm phụ trợ có thể gọi, hãy định cấu hình hoạt động tương tác với trình mô phỏng Cloud Functions for Firebase như sau:
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Unity
FirebaseFunctions functions = FirebaseFunctions.DefaultInstance; // Connects to the Functions Emulator running on port 5001 functions.UseFunctionsEmulator("http://127.0.0.1:5001");
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
Trang bị cho ứng dụng của bạn để mô phỏng các hàm HTTPS
Mỗi hàm HTTPS trong mã của bạn sẽ được phân phát từ trình mô phỏng cục bộ bằng định dạng URL sau:
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
Ví dụ: một hàm helloWorld đơn giản có cổng máy chủ và khu vực mặc định sẽ được phân phát tại:
https://localhost:5001/$PROJECT/us-central1/helloWorld
Đo lường ứng dụng để mô phỏng các hàm trong hàng đợi tác vụ
Trình mô phỏng tự động thiết lập hàng đợi tác vụ được mô phỏng dựa trên định nghĩa điều kiện kích hoạt, và SDK dành cho quản trị viên sẽ định tuyến lại các yêu cầu trong hàng đợi đến trình mô phỏng nếu phát hiện thấy trình mô phỏng đang chạy thông qua biến môi trường CLOUD_TASKS_EMULATOR_HOST.
Xin lưu ý rằng hệ thống điều phối được dùng trong môi trường thực tế phức tạp hơn hệ thống được triển khai trong trình mô phỏng, vì vậy, bạn không nên mong đợi hành vi mô phỏng phản ánh chính xác môi trường thực tế. Các tham số trong trình mô phỏng cung cấp giới hạn trên cho tốc độ gửi và thử lại tác vụ.
Đo lường ứng dụng để mô phỏng các hàm được kích hoạt ở chế độ nền
Trình mô phỏng Cloud Functions hỗ trợ các hàm được kích hoạt trong nền từ các nguồn sau:
- Trình mô phỏng Realtime Database
- Trình mô phỏng Cloud Firestore
- Trình mô phỏng Authentication
- Trình mô phỏng Pub/Sub
- Trình mô phỏng cảnh báo Firebase
Để kích hoạt các sự kiện trong nền, hãy sửa đổi tài nguyên phụ trợ bằng cách sử dụng Emulator Suite UI hoặc bằng cách kết nối ứng dụng hoặc mã kiểm thử của bạn với trình mô phỏng bằng SDK cho nền tảng của bạn.
Trình xử lý kiểm thử cho các sự kiện tuỳ chỉnh do Tiện ích phát ra
Đối với các hàm bạn triển khai để xử lý sự kiện tuỳ chỉnh Firebase Extensions bằng Cloud Functions phiên bản 2, trình mô phỏng Cloud Functions sẽ ghép nối với trình mô phỏng Eventarc để hỗ trợ trình kích hoạt Eventarc.
Để kiểm thử trình xử lý sự kiện tuỳ chỉnh cho các tiện ích phát ra sự kiện, bạn phải cài đặt trình mô phỏng Cloud Functions và Eventarc.
Thời gian chạy Cloud Functions đặt biến môi trường EVENTARC_EMULATOR thành localhost:9299 trong quy trình hiện tại nếu trình mô phỏng Eventarc đang chạy. Firebase Admin SDK tự động kết nối với trình mô phỏng Eventarc khi biến môi trường EVENTARC_EMULATOR được đặt. Bạn có thể sửa đổi cổng mặc định như đã thảo luận trong phần Định cấu hình Local Emulator Suite.
Khi các biến môi trường được định cấu hình đúng cách, Firebase Admin SDK sẽ tự động gửi sự kiện đến trình mô phỏng Eventarc. Đến lượt mình, trình mô phỏng Eventarc sẽ gọi lại trình mô phỏng Cloud Functions để kích hoạt mọi trình xử lý đã đăng ký.
Bạn có thể kiểm tra nhật ký của Cloud Functions trong Emulator Suite UI để biết thông tin chi tiết về việc thực thi trình xử lý.
Tương tác với các dịch vụ khác
Bộ công cụ mô phỏng bao gồm nhiều trình mô phỏng, cho phép kiểm thử các hoạt động tương tác giữa nhiều sản phẩm.
Cloud Firestore
Nếu bạn có các hàm sử dụng SDK của Firebase dành cho quản trị viên để ghi vào Cloud Firestore, thì các lượt ghi này sẽ được gửi đến trình mô phỏng Cloud Firestore nếu trình mô phỏng này đang chạy. Nếu các hàm khác được kích hoạt bởi các hoạt động ghi đó, chúng sẽ được chạy trong trình mô phỏng Cloud Functions.
Cloud Storage
Nếu bạn có các hàm sử dụng SDK của Firebase dành cho quản trị viên (phiên bản 9.7.0 trở lên) để ghi vào Cloud Storage, thì các hoạt động ghi này sẽ được gửi đến trình mô phỏng Cloud Storage nếu trình mô phỏng này đang chạy. Nếu các hàm khác được kích hoạt bởi các hoạt động ghi đó, chúng sẽ được chạy trong trình mô phỏng Cloud Functions.
Firebase Authentication
Nếu bạn có các hàm sử dụng SDK của Firebase dành cho quản trị viên (phiên bản 9.3.0 trở lên) để ghi vào Firebase Authentication, thì các hoạt động ghi này sẽ được gửi đến trình mô phỏng Xác thực nếu trình mô phỏng này đang chạy. Nếu các hàm khác được kích hoạt bởi các hoạt động ghi đó, chúng sẽ được chạy trong trình mô phỏng Cloud Functions.
Lưu trữ Firebase
Nếu bạn đang sử dụng Cloud Functions để tạo nội dung động cho Firebase Hosting, thì firebase emulators:start sẽ sử dụng các hàm HTTP cục bộ làm proxy cho dịch vụ lưu trữ.
Cảnh báo của Firebase
Trong mọi dự án có ít nhất một điều kiện kích hoạt cảnh báo Firebase được hỗ trợ, giao diện người dùng của trình mô phỏng sẽ có thẻ FireAlerts. Cách mô phỏng một điều kiện kích hoạt cảnh báo:
- Mở thẻ FireAlerts (Cảnh báo cháy). Thẻ này hiển thị một trình đơn thả xuống chứa các loại cảnh báo có trình kích hoạt liên kết với chúng (ví dụ: nếu bạn có trình kích hoạt onNewFatalIssuePublished, thì crashlytics.newFatalIssue sẽ xuất hiện).
- Chọn một loại cảnh báo. Biểu mẫu sẽ tự động điền sẵn các giá trị mặc định mà bạn có thể chỉnh sửa. Bạn có thể chỉnh sửa các trường của sự kiện (thông tin khác từ sự kiện cảnh báo được suy luận, giá trị mô phỏng hoặc được tạo ngẫu nhiên).
- Chọn Send Alert (Gửi cảnh báo) để gửi cảnh báo tổng hợp đến trình mô phỏng hàm, với tính năng ghi nhật ký có sẵn trong phần Alerts (Cảnh báo) trong bảng điều khiển Firebase (cũng như trong nhật ký).
Các bước tiếp theo
Để xem ví dụ đầy đủ về cách sử dụng bộ công cụ mô phỏng Firebase, hãy xem mẫu bắt đầu nhanh về kiểm thử.