Chạy các hàm trên máy

Firebase CLI 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ụ
  • 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 Firebase hỗ trợ, và Cloud Pub/Sub.

Bạn có thể chạy các hàm cục bộ để kiểm thử trước khi triển khai vào môi trường thực tế.

Cài đặt Firebase CLI

.

Để sử dụng trình mô phỏng Cloud Functions, trước tiên, hãy cài đặt Firebase CLI:

npm install -g firebase-tools

Để sử dụng trình mô phỏng cục bộ, Cloud Functions phải phụ thuộc vào:

  • firebase-admin phiên bản 8.0.0 trở lên.
  • firebase-functions phiên bản 3.0.0 trở lên.

Thiết lập thông tin đăng nhập quản trị (không bắt buộc)

Nếu muốn các bài kiểm thử hàm tương tác với API của Google hoặc các API khác của Firebase 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 quản trị.

  • Trình kích hoạt Cloud FirestoreRealtime Database đã có đủ thông tin đăng nhập và không yêu cầu thiết lập bổ sung.
  • Tất cả các API khác, bao gồm cả API của Firebase (chẳng hạn như AuthenticationFCM) hoặc API của Google (chẳng hạn 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 đăng nhập quản trị cho các hàm được mô phỏng:

  1. Mở ngăn Tài khoản dịch vụ của bảng điều khiển Google Cloud.
  2. Đảm bảo rằng bạn đã chọn App Engine tài khoản dịch vụ mặc định rồi sử dụng trình đơn tùy chọn ở bên phải để chọn Tạo khoá.
  3. Khi được nhắc, hãy chọn JSON cho loại khoá rồi nhấp vào Tạo.
  4. Đặt thông tin đăng nhập 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 bài kiểm thử hàm có thể truy cập vào API của Firebase và Google bằng SDK dành cho quản trị viên. Ví dụ: khi kiểm thử 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 sử 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 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ổ thiết bị đầu cuối nơi trình mô phỏng chạy. Trình mô phỏng này sẽ hiển thị tất cả đầu ra từ các câu lệnh console.log(), console.info(), console.error()console.warn() bên trong các hàm của bạn.

Xin lưu ý rằng theo mặc định, đầu ra của trình mô phỏng sẽ mô phỏng việc triển khai các hàm ở 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ế. Hãy xem phần Cloud Functions vị trí để biết thêm thông tin về các khu vực.

Gắn mã theo dõi ứng dụng để giao tiếp với trình mô phỏng

Để đo lường ứng dụng nhằm tương tác với trình mô phỏng, bạn có thể cần thực hiện một số cấu hình bổ sung.

Gắn mã theo dõi cho ứng dụng của bạn để sử dụng các hàm có thể gọi

Nếu nguyên mẫu và các hoạt động kiểm thử của bạn liên quan đến các hàm phụ trợ có thể gọicallable backend functions, 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 emulator 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)

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);

Gắn mã theo dõi ứng dụng để mô phỏng các hàm HTTPS

Mỗi hàm HTTPS trong mã của bạn sẽ được cung cấp 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 cung cấp tại:

https://localhost:5001/$PROJECT/us-central1/helloWorld

Gắn mã theo dõi ứng dụng để mô phỏng các hàm hàng đợi tác vụ

Trình mô phỏng sẽ tự động thiết lập các 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ẽ chuyển hướng các yêu cầu được xếp 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 phân phối được sử 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 được mô phỏng sẽ 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 độ phân phối và thử lại các tác vụ.

Gắn mã theo dõi ứng dụng để mô phỏng các hàm được kích hoạt trong 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
  • Pub/Sub trình mô phỏng
  • Trình mô phỏng cảnh báo của 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 Emulator Suite UI, hoặc bằng cách kết nối ứng dụng hoặc mã kiểm thử 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 mà bạn triển khai để xử lý các 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ẽ kết hợp 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 sẽ đặt biến môi trường EVENTARC_EMULATOR thành localhost:9299 trong quá trình hiện tại nếu trình mô phỏng Eventarc đang chạy. Các Firebase Admin SDK sẽ tự động kết nối với trình mô phỏng Eventarc khi biến môi trường EVENTARC_EMULATOR được thiết lập. 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 các 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ý Hàm trong Emulator Suite UI để biết thông tin chi tiết về quá trình 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 các 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 Firestorenế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 lượt ghi đó, thì các hàm này sẽ 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 lượt 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 lượt ghi đó, thì các hàm này sẽ 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 lượt 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 lượt ghi đó, thì các hàm này sẽ 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 việc lưu trữ.

Cảnh báo của Firebase

Trong mọi dự án có ít nhất một trình kích hoạt cảnh báo được Firebase 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 trình kích hoạt cảnh báo:

  1. Mở thẻ FireAlerts. 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 được 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).
  2. Chọn một loại cảnh báo. Biểu mẫu sẽ tự động điề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 ra, giá trị mô phỏng hoặc được tạo ngẫu nhiên).
  3. 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ó 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ử .