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

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:

  • Các 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ảnh báo Firebase được 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 chính thức.

Cài đặt Firebase CLI

Để 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-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 của quản trị viên (không bắt buộc)

Nếu bạn muốn các phép kiểm thử hàm của mình tương tác với API của Google hoặc Firebase khác API thông qua SDK quản trị của Firebase, bạn có thể cần thiết lập thông tin đăng nhập của quản trị viên.

  • Điều kiện 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 thêm.
  • Tất cả các API khác, kể cả API của Firebase như AuthenticationFCM hoặc API của Google (chẳng hạn như Cloud Translation hoặc Cloud Speech) đều cần phải thực hiện các bước thiết lập như 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 của quản trị viên cho các chức năng đượ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. Hãy đảm bảo rằng bạn đã chọn App Engine tài khoản dịch vụ mặc định và sử dụng trình đơn tuỳ chọn ở bên phải để chọn Create key (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 xác thực mặc định trên Google của bạn để 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 thành các bước này, các thử nghiệm chức năng của bạn có thể truy cập vào Firebase và API của Google bằng cách sử dụng SDK quản trị. Ví dụ: khi kiểm thử điều kiện 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 biến cấu hình của hàm tùy chỉnh, trước tiên hãy chạy để lấy cấu hình tuỳ chỉnh của bạn (chạy lệnh này trong thư mục functions) trong môi trường địa phương:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Chạy bộ trình 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, Dựa trên Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và dịch vụ Lưu trữ Firebase 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 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 đã đã bắt đầu, hãy dùng lệnh emulators:exec:

firebase emulators:exec "./my-test.sh"

Đo lường ứng dụng của bạn để trò chuyện với trình mô phỏng

Để đo lường khả năng tương tác của ứng dụng với trình mô phỏng, có thể bạn cầ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 hoạt động kiểm thử và nguyên mẫu 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+KTX
// 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().useFunctionsEmulator(origin: "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);

Đo lường ứ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 cách sử dụ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 và khu vực máy chủ lưu trữ 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 chức năng của 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 đ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 nó phát hiện thấy nó đang chạy thông qua môi trường CLOUD_TASKS_EMULATOR_HOST biến.

Lưu ý rằng hệ thống điều phối được dùng trong sản xuất phức tạp hơn so với một định dạng được triển khai trong trình mô phỏng, vì vậy, bạn không nên mong đợi để phản ánh chính xác môi trường sản xuất. Các tham số trong trình mô phỏng đưa ra giới hạn trên đối với tốc độ gửi các công việc và đã thử lại.

Đo lường ứng dụng của bạn để 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ừ những 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 các 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 hay mã kiểm thử với trình mô phỏng bằng cách sử dụ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 tạo ra

Đối với các hàm bạn triển khai để xử lý sự kiện tuỳ chỉnh Firebase Extensions với Cloud Functions v2, trình mô phỏng Cloud Functions ghép nối với Trình mô phỏng Eventarc để hỗ trợ Điều kiện 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.

Môi trường thời gian chạy Cloud Functions thiết lập 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. Các Firebase Admin SDK tự động kết nối với Eventarc trình mô phỏng khi biến môi trường EVENTARC_EMULATOR được đặt. Bạn có thể sửa đổi cổng mặc định như được thảo luận trong Đị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 tự động gửi sự kiện đến trình mô phỏng Eventarc. Đổi lại, Eventarc trình mô phỏng thực hiện lệnh gọi lại đến trình mô phỏng Cloud Functions để kích hoạt bất kỳ 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ề trình xử lý thực thi.

Hoạt động tương tác với các dịch vụ khác

Bộ trình mô phỏng bao gồm nhiều trình mô phỏng, cho phép thử nghiệm 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 quản trị Firebase để ghi vào Cloud Firestore, các lượt ghi này sẽ được gửi đến trình mô phỏng Cloud Firestore nếu nó đang chạy. Nếu các hàm ghi đó được kích hoạt thêm, thì chúng sẽ được chạy trong trình mô phỏng Cloud Functions.

Cloud Storage

Trường hợp bạn có các hàm sử dụng SDK quản trị của Firebase (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 nó đang chạy. Nếu các hàm ghi đó được kích hoạt thêm, thì chúng sẽ được chạy trong trình mô phỏng Cloud Functions.

Firebase Authentication

Trường hợp bạn có các hàm sử dụng SDK quản trị của Firebase (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 nó đang chạy. Nếu các hàm ghi đó được kích hoạt thêm, thì 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, firebase emulators:start sử dụng các chức năng HTTP cục bộ làm proxy để lưu trữ.

Cảnh báo của Firebase

Trong bất kỳ dự án nào có ít nhất một điều kiện kích hoạt cảnh báo Firebase được hỗ trợ, trình mô phỏng bao gồm thẻ FireAlerts. Cách mô phỏng điều kiện 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 loại cảnh báo có trình kích hoạt đi kèm với chúng (ví dụ: nếu bạn có một điều kiện kích hoạt onNewFatalIssuePublished, thìCrashlytics.newFatalIssue là hiển thị).
  2. Chọn một loại thông báo. Biểu mẫu sẽ tự động điền các giá trị mặc định, chỉnh sửa được. Bạn có thể chỉnh sửa các trường của sự kiện (khác thông tin từ sự kiện cảnh báo là suy luận, giá trị mô phỏng hoặc được tạo ngẫu nhiên).
  3. Chọn Gửi cảnh báo để gửi cảnh báo tổng hợp đến trình mô phỏng hàm. bằng tính năng ghi nhật ký trong Thông báo trên bảng điều khiển Firebase (cũng như trong nhật ký).

Ghi nhật ký

Trình mô phỏng truyền nhật ký từ các hàm của bạn sang cửa sổ dòng lệnh nơi chúng chạy. Phần này cho thấy tất cả kết quả đầu ra từ console.log(), console.info(), Các câu lệnh console.error()console.warn() bên trong hàm của bạn.

Các bước tiếp theo

Để biết ví dụ đầy đủ về cách sử dụng bộ mô phỏng Firebase, hãy xem mẫu bắt đầu nhanh kiểm thử.