Chạy hàm cục bộ

Firebase CLI bao gồm một trình mô phỏng Chức năng đám mây có thể mô phỏng các loại hàm sau:

  • Các hàm HTTPS
  • Hàm có thể gọi
  • Các hàm nền được kích hoạt thông qua tính năng Xác thực Firebase, Cơ sở dữ liệu theo thời gian thực, Cloud Firestore, Cloud Storage 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 chính thức.

Cài đặt Giao diện dòng lệnh (CLI) của Firebase

Để sử dụng trình mô phỏng Chức năng đám mây, 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ộ, Chức năng đám mây 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 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 Firebase khác thông qua SDK quản trị của Firebase, bạn có thể cần phải thiết lập thông tin đăng nhập quản trị viên.

  • Các trình kích hoạt Cloud Firestore và Cơ sở dữ liệu theo thời gian thực đã có đủ thông tin đăng nhập và không yêu cầu thiết lập thêm.
  • Tất cả những API khác, bao gồm cả API Firebase (chẳng hạn như API Xác thực và FCM) hoặc API của Google (chẳng hạn như Cloud Translation hay Cloud Speech) đều cần thực hiện các bước thiết lập như mô tả trong phần này. Điều này được áp dụng cho dù bạn đang sử dụng shell hàm Cloud 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. Hãy đảm bảo bạn đã chọn Tài khoản dịch vụ mặc định của App Engine và sử dụng trình đơn tuỳ chọn ở bên phải để chọn Create key (Tạo khoá).
  3. Khi thấy lời 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 tất những bước này, các bài kiểm thử chức năng của bạn có thể truy cập vào Firebase và API Google bằng SDK quản trị. Ví dụ: khi kiểm thử trình kích hoạt Xác thực, 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 tuỳ chỉnh, trước tiên, hãy chạy lệnh để 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 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ộ trình mô phỏng

Để chạy trình mô phỏng Chức năng đám mây, 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, Realtime Database và dịch vụ Lưu trữ Firebase dựa trên những 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"

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

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

Đo lường ứng dụng của bạn cho các chức năng có thể gọi

Nếu hoạt động thử nghiệm và chạy nguyên mẫu của bạn liên quan đến 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 Chức năng đám mây cho 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")

API mô-đun web

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "127.0.0.1", 5001);

API được đặt tên trong vùng chứa tên của web

firebase.functions().useEmulator("127.0.0.1", 5001);

Đo lường ứng dụng của bạn để mô phỏng các chức năng 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ộ theo định dạng URL sau:

http://$HOST:$PORT/$PROJECT/$REGION/$NAME

Ví dụ: một hàm helloWorld đơn giản có khu vực và cổng 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 của bạn để mô phỏng các chức năng được kích hoạt ở chế độ nền

Trình mô phỏng Cloud Functions hỗ trợ các chức năng được kích hoạt trong nền qua những nguồn sau:

  • Trình mô phỏng Cơ sở dữ liệu theo thời gian thực
  • Trình mô phỏng Cloud Firestore
  • Trình mô phỏng xác thực
  • Trình mô phỏng Pub/Sub

Để 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 giao diện người dùng của Bộ mô phỏng, 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 SDK dành 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 của Tiện ích Firebase phiên bản 2, trình mô phỏng Chức năng đám mây sẽ ghép nối với trình mô phỏng Eventarc để hỗ trợ điều kiện kích hoạt Sự kiện.

Để 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 chức năng đám mây và trình mô phỏng Eventarc.

Thời gian chạy Chức năng đám mây đặ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. SDK dành cho quản trị viên Firebase 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 bộ mô phỏng cục bộ.

Khi các biến môi trường được định cấu hình đúng cách, SDK quản trị của Firebase sẽ tự động gửi các sự kiện đến trình mô phỏng Eventarc. Đổi lại, trình mô phỏng Eventarc sẽ thực hiện một lệnh gọi lại trình mô phỏng Chức năng đám mây để 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 giao diện người dùng Emulator Suite để biết thông tin chi tiết về quá trình thực thi trình xử lý.

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 kiểm thử các tương tác trên nhiều sản phẩm.

Cloud Firestore

Nếu bạn có các hàm sử dụng SDK dành cho quản trị viên Firebase để 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 đang chạy. Nếu các hàm khác được kích hoạt bởi các lượt ghi đó, chúng sẽ được chạy trong trình mô phỏng Chức năng đám mây.

Cloud Storage

Nếu bạn có các hàm dùng SDK dành cho quản trị viên Firebase (phiên bản 9.7.0 trở lên) để ghi vào Cloud Storage, thì những lượt ghi này sẽ được gửi đến trình mô phỏng Cloud Storage nếu trình mô phỏng đang chạy. Nếu các hàm khác được kích hoạt bởi các lượt ghi đó, chúng sẽ được chạy trong trình mô phỏng Chức năng đám mây.

Xác thực Firebase

Nếu bạn có các hàm dùng SDK dành cho quản trị viên Firebase (phiên bản 9.3.0 trở lên) để ghi vào tính năng Xác thực Firebase, 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 đang chạy. Nếu các hàm khác được kích hoạt bởi các lượt ghi đó, chúng sẽ được chạy trong trình mô phỏng Chức năng đám mây.

Lưu trữ Firebase

Nếu bạn đang sử dụng Chức năng đám mây để tạo nội dung động cho Lưu trữ Firebase, thì firebase emulators:start sẽ sử dụng các hàm HTTP cục bộ làm proxy để lưu trữ.

Logging

Trình mô phỏng 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 chúng chạy. Khung này hiển thị tất cả kết quả của 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.

Các bước tiếp theo

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