Trước khi kết nối ứng dụng của bạn với trình giả lập Chức năng đám mây, hãy đảm bảo rằng bạn hiểu toàn bộ quy trình làm việc của Bộ giả lập cục bộ Firebase và bạn cài đặt cũng như định cấu hình Bộ giả lập cục bộ cũng như xem lại các lệnh CLI của nó.
Chọn một dự án Firebase
Bộ giả lập cục bộ Firebase mô phỏng các sản phẩm cho một dự án Firebase duy nhất.
Để chọn dự án sẽ sử dụng, trước khi bạn khởi động trình giả lập, trong CLI hãy chạy firebase use
trong thư mục làm việc của bạn. Hoặc, bạn có thể chuyển cờ --project
cho từng lệnh giả lập.
Bộ giả lập cục bộ hỗ trợ mô phỏng các dự án Firebase thực và các dự án demo .
Loại dự án | Đặc trưng | Sử dụng với trình giả lập |
---|---|---|
Thực tế | Dự án Firebase thực là dự án bạn đã tạo và định cấu hình (rất có thể thông qua bảng điều khiển Firebase). Dự án thực có tài nguyên trực tiếp, chẳng hạn như phiên bản cơ sở dữ liệu, bộ chứa lưu trữ, chức năng 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 giả lập cho bất kỳ hoặc tất cả các sản phẩm được hỗ trợ. Đối với bất kỳ sản phẩm nào 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 lưu trữ, chức năng, v.v.). |
Thử nghiệm | Dự án Firebase demo không có cấu hình Firebase thực và không có tài nguyên trực tiếp. Những dự án này thường được truy cập thông qua phòng thí nghiệm lập trình hoặc các hướng dẫn khác. ID dự án cho các dự án demo có tiền tố | Khi làm việc với các dự án Firebase demo, ứng dụng và mã của bạn chỉ tương tác với trình giả lập . Nếu ứng dụng của bạn cố gắng tương tác với tài nguyên mà trình mô phỏng không chạy, thì mã đó sẽ không thành công. |
Chúng tôi khuyên bạn nên sử dụng các dự án demo bất cứ khi nào có thể. Lợi ích bao gồm:
- Thiết lập dễ dàng hơn vì bạn có thể chạy trình giả lập 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 (sản xuất) không được mô phỏng, thì sẽ không có khả năng thay đổi dữ liệu, cách sử dụng và thanh toán
- Hỗ trợ ngoại tuyến tốt hơn vì không cần truy cập internet để tải xuống cấu hình SDK của bạn.
Thiết bị ứng dụng của bạn để nói chuyện với trình giả lập
Cung cấp ứng dụng của bạn cho các chức năng có thể gọi được
Nếu các hoạt động thử nghiệm và nguyên mẫu của bạn liên quan đến các chức năng phụ trợ có thể gọi được , hãy định cấu hình tương tác với trình giả lập 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);
Nhanh
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Web modular API
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "localhost", 5001);
Web namespaced API
firebase.functions().useEmulator("localhost", 5001);
Cung cấp ứng dụng của bạn để mô phỏng chức năng HTTPS
Mỗi chức năng HTTPS trong mã của bạn sẽ được cung cấp từ trình giả lập cục bộ bằng định dạng URL sau:
http:// $HOST : $PORT / $PROJECT / $REGION / $NAME
Ví dụ: một chức năng helloWorld
đơn giản với vùng và cổng máy chủ mặc định sẽ được phục vụ tại:
https://localhost:5001/ $PROJECT /us-central1/helloWorld
Thiết bị cho ứng dụng của bạn để mô phỏng các chức năng được kích hoạt trong nền
Trình mô phỏng Chức năng đám mây hỗ trợ các chức năng kích hoạt nền từ các nguồn sau:
- Trình giả lập cơ sở dữ liệu thời gian thực
- Trình giả lập Cloud Firestore
- giả lập xác thực
- Trình giả lập Pub/Sub
Để kích hoạt các sự kiện nền, hãy sửa đổi tài nguyên phía sau bằng cách sử dụng giao diện người dùng Bộ giả lập hoặc bằng cách kết nối ứng dụng hoặc mã thử nghiệm của bạn với trình giả lập bằng SDK dành cho nền tảng của bạn.
Trình xử lý thử nghiệm cho các sự kiện tùy chỉnh do Tiện ích mở rộng phát ra
Đối với các chức năng bạn triển khai để xử lý các sự kiện tùy chỉnh của Tiện ích mở rộng Firebase với Cloud Functions v2, trình giả lập Cloud Functions kết hợp với trình giả lập Eventarc để hỗ trợ trình kích hoạt Eventarc .
Để kiểm tra trình xử lý sự kiện tùy chỉnh cho các tiện ích phát ra sự kiện, bạn phải cài đặt trình giả lập Chức năng đám mây và Eventarc.
Thời gian chạy Hàm đá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 giả lập Eventarc đang chạy. SDK quản trị 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ộ giả lập 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ị Firebase sẽ tự động gửi các sự kiện đến trình giả lập Eventarc. Đổi lại, trình giả lập Eventarc gọi lại trình giả lập 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 Bộ giả lập để biết chi tiết về việc thực thi trình xử lý.
Định cấu hình môi trường thử nghiệm cục bộ
Nếu các chức năng của bạn dựa vào cấu hình môi trường dựa trên dotenv , thì bạn có thể mô phỏng hành vi đó trong môi trường thử nghiệm cục bộ của mình.
Khi sử dụng trình mô phỏng Cloud Function cục bộ, bạn có thể ghi đè các biến môi trường cho dự án của mình bằng cách thiết lập tệp .env.local
. Nội dung của .env.local
được ưu tiên hơn .env
và tệp .env
dành riêng cho dự án.
Ví dụ: một dự án có thể bao gồm ba tệp này chứa các giá trị hơi khác nhau để phát triển và thử nghiệm cục bộ:
.env | .env.dev | .env.local |
HÀNH TINH=Trái Đất ĐỐI TƯỢNG=Con người | ĐỐI TƯỢNG=Nhà phát triển Con người | ĐỐI TƯỢNG=Người địa phương |
Khi bắt đầu trong ngữ cảnh cục bộ, trình giả lập sẽ tải các biến môi trường như sau:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
Bí mật và thông tin xác thực trong trình giả lập Chức năng đám mây
Trình giả lập Chức năng đám mây hỗ trợ sử dụng bí mật để lưu trữ và truy cập thông tin cấu hình nhạy cảm . Theo mặc định, trình giả lập sẽ cố gắng truy cập các bí mật sản xuất của bạn bằng thông tin đăng nhập mặc định của ứng dụng . Trong một số trường hợp như môi trường CI, trình giả lập có thể không truy cập được các giá trị bí mật do hạn chế về quyền.
Tương tự như hỗ trợ trình giả lập Cloud Function cho các biến môi trường, bạn có thể ghi đè các giá trị bí mật bằng cách thiết lập tệp .secret.local
. Điều này giúp bạn dễ dàng kiểm tra các chức năng của mình cục bộ, đặc biệt nếu bạn không có quyền truy cập vào giá trị bí mật.
Những công cụ nào khác để thử nghiệm Chức năng đám mây tồn tại?
Trình mô phỏng Chức năng đám mây được bổ sung bởi các công cụ thử nghiệm và nguyên mẫu khác:
- Trình bao Chức năng đám mây, cho phép tạo nguyên mẫu và phát triển các chức năng tương tác, lặp đi lặp lại. Shell sử dụng trình giả lập Chức năng đám mây với giao diện kiểu REPL để phát triển. Không tích hợp với trình giả lập Cơ sở dữ liệu thời gian thực hoặc Cloud Firestore được cung cấp. Khi sử dụng trình bao, bạn mô phỏng dữ liệu và thực hiện các lệnh gọi hàm để mô phỏng tương tác với các sản phẩm mà Bộ mô phỏng cục bộ hiện không hỗ trợ: Analytics, Cấu hình từ xa và Crashlytics.
- SDK thử nghiệm Firebase cho các chức năng trên đám mây, một Node.js với khung mocha để phát triển các chức năng. Trên thực tế, SDK thử nghiệm chức năng đám mây cung cấp khả năng tự động hóa trên lớp vỏ Chức năng đám mây.
Bạn có thể tìm hiểu thêm về vỏ Chức năng đám mây và SDK kiểm tra chức năng đám mây tại Kiểm tra các chức năng tương tác và Thử nghiệm đơn vị của Chức năng đám mây .
Trình giả lập Chức năng đám mây khác với sản xuất như thế nào
Trình mô phỏng Chức năng đám mây khá gần với môi trường sản xuất cho phần lớn các trường hợp sử dụng. Chúng tôi đã nỗ lực hết sức để đảm bảo mọi thứ trong thời gian chạy Node càng gần với sản xuất càng tốt. Tuy nhiên, trình giả lập không bắt chước môi trường sản xuất được chứa đầy đủ, vì vậy, mặc dù mã chức năng của bạn sẽ thực thi một cách thực tế, nhưng các khía cạnh khác của môi trường của bạn (ví dụ: tệp cục bộ, hành vi sau khi chức năng gặp sự cố, v.v.) sẽ khác.
IAM đám mây
Bộ giả lập Firebase không cố gắng sao chép hoặc tôn trọng bất kỳ hành vi nào liên quan đến IAM để chạy. Trình giả lập tuân thủ Quy tắc bảo mật Firebase được cung cấp, nhưng trong các 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 Chức năng đám mây và do đó, các quyền, trình giả lập 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 nhà phát triển của bạn, tương tự như chạy tập lệnh cục bộ trực tiếp.
Hạn chế bộ nhớ và bộ xử lý
Trình giả lập không thực thi các hạn chế về bộ nhớ hoặc bộ xử lý đối với các chức năng của bạn. Tuy nhiên, trình mô phỏng hỗ trợ các chức năng hết thời gian thông qua đối số thời gian chạy timeoutSeconds
.
Lưu ý rằng thời gian thực thi hàm có thể khác với thời gian sản xuất khi các hàm được chạy trong trình giả lập. Chúng tôi khuyên rằng sau khi bạn đã thiết kế và thử nghiệm các chức năng với trình giả lập, bạn nên chạy các thử nghiệm giới hạn trong quá trình sản xuất để xác nhận thời gian thực hiện.
Lập kế hoạch cho sự khác biệt trong môi trường địa phương và sản xuất
Vì trình mô phỏng chạy trên máy cục bộ của bạn nên nó phụ thuộc vào môi trường cục bộ của bạn đối với các ứng dụng cũng như các chương trình và tiện ích tích hợp sẵn.
Xin lưu ý rằng môi trường cục bộ của bạn để phát triển Chức năng đám mây có thể khác với môi trường sản xuất của Google:
Các ứng dụng bạn cài đặt cục bộ để mô phỏng môi trường sản xuất (ví dụ: ImageMagick từ hướng dẫn này ) có thể khác về hành vi so với sản xuất, đặc biệt nếu bạn yêu cầu một phiên bản khác hoặc phát triển trong môi trường không phải Linux. Cân nhắc việc triển khai bản sao nhị phân của chương trình bị thiếu cùng với việc triển khai chức năng của bạn.
Tương tự, các tiện ích tích hợp sẵn (ví dụ: các lệnh shell như
ls
,mkdir
) có thể khác với các phiên bản có sẵn trong sản xuất, đặc biệt nếu bạn đang phát triển trong môi trường không phải Linux (ví dụ: macOS). Bạn có thể xử lý sự cố này bằng cách sử dụng các lựa chọn thay thế chỉ dành cho Nút cho các lệnh gốc hoặc bằng cách xây dựng các tệp nhị phân Linux để đi kèm với quá trình triển khai của bạn.
đang thử lại
Trình mô phỏng Chức năng đám mây không hỗ trợ thử lại các chức năng khi không thành công.
Tiếp theo là gì?
- Để có bộ video được tuyển chọn và các ví dụ chi tiết về cách thực hiện, hãy làm theo Danh sách phát đào tạo về trình giả lập Firebase .
- Tìm hiểu thêm về Chức năng đám mây cho trình giả lập Firebase tại Chạy chức năng cục bộ .