Kết nối ứng dụng của bạn với Trình mô phỏng chức năng đám mây

Trước khi kết nối ứng dụng của bạn với chức năng đám mây giả lập, hãy chắc chắn rằng bạn hiểu được công việc tổng thể căn cứ hỏa lực địa phương Emulator Suite , và rằng bạn cài đặt và cấu hình các địa phương Emulator Suite và xem xét nó lệnh CLI .

Chọn một dự án Firebase

Bộ mô phỏng 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ử dụng, trước khi bạn bắt đầu giả lập, trong CLI chạy firebase use trong thư mục làm việc của bạn. Hoặc, bạn có thể vượt qua --project cờ cho mỗi lệnh giả lập.

Địa phương Emulator Suite hỗ trợ thi đua của các dự án căn cứ hỏa lực thựcdemo dự án.

Loại dự án Đặc trưng Sử dụng với trình giả lập
Thực

Dự án Firebase thực là dự án bạn đã tạo và định cấu hình (rất có thể là thông qua bảng điều khiển Firebase).

Các dự án thực có các tài nguyên trực tiếp, chẳng hạn như các phiên bản cơ sở dữ liệu, nhóm 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 bạn không mô phỏng, ứng dụng và mã của bạn sẽ tương tác với các tài nguyên sống (ví dụ cơ sở dữ liệu, lưu trữ xô, chức năng, vv).

Bản giới thiệu

Một dự án căn cứ hỏa lực bản demo không có cấu hình căn cứ hỏa lực thực tế và không có tài nguyên sống. Các dự án này thường được truy cập thông qua codelabs hoặc các hướng dẫn khác.

Dự án ID cho bản demo dự án có demo- tiền tố.

Khi làm việc với bản demo dự án căn cứ hỏa lực, ứng dụng của bạn và tương tác mã với chỉ 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 giả lập 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 không được mô phỏng (sản xuất), thì sẽ không có cơ hội thay đổi dữ liệu, 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.

Tạo công cụ cho ứng dụng của bạn để nói chuyện với trình giả lập

Tạo công cụ cho ứng dụng của bạn cho các chức năng có thể gọi

Nếu các hoạt động nguyên mẫu và thử nghiệm của bạn liên quan đến các chức năng phụ trợ callable , tương tác cấu hình với chức năng đám mây cho căn cứ hỏa lực giả lập như thế này:

Android
        // 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().useFunctionsEmulator(origin: "http://localhost:5001")

Phiên bản web 9

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

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

Phiên bản web 8

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

Tạo công cụ cho ứ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ộ bằng cách sử dụng định dạng URL sau:

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

Ví dụ đơn giản helloWorld chức năng với cổng máy chủ mặc định và khu vực sẽ được phục vụ tại địa chỉ:

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

Tạo công cụ 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 giả lập Chức năng đám mây hỗ trợ các chức năng được kích hoạt trong 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
  • Trình 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 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 cho nền tảng của bạn.

Những công cụ nào khác để kiểm tra Chức năng đám mây tồn tại?

Trình giả lập 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:

  • Vỏ Chức năng đám mây, cho phép tạo 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 mô phỏng Cloud Functions với giao diện kiểu REPL để phát triển. Không có tích hợp với trình giả lập Cloud Firestore hoặc Cơ sở dữ liệu thời gian thực được cung cấp. Sử dụng shell, 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à Local Emulator Suite hiện không hỗ trợ: Analytics, Remote Config và Crashlytics.
  • SDK kiểm tra Firebase cho các chức năng đá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 kiểm tra các chức năng trên đám mây cung cấp tính năng tự động hóa ở trên cùng của trình bao Các chức năng trên đám mây.

Bạn có thể tìm hiểu thêm về các chức năng của Cloud shell và Cloud Chức năng Kiểm tra SDK tại chức năng thử nghiệm tương tácđơn vị thử nghiệm của Cloud Chức năng .

Trình giả lập Chức năng đám mây khác với phiên bản sản xuất như thế nào

Trình giả lập Cloud Functions 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 gần với quá trình sản xuất nhất có thể. 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 trong khi mã chức năng của bạn sẽ thực thi thực tế, các khía cạnh khác của môi trường của bạn (tức là tệp cục bộ, hành vi sau khi chức năng gặp sự cố, v.v.) sẽ khác.

Đám mây IAM

Firebase Emulator Suite 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 tình huống mà IAM thường được sử dụng, chẳng hạn như để đặt Chức năng đám mây gọi tài khoản dịch vụ và do đó, không thể định cấu hình trình mô phỏng 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 trực tiếp một tập lệnh cục bộ.

Các hạn chế về 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ý cho các chức năng của bạn. Tuy nhiên, giả lập không thời gian hỗ trợ ra chức năng thông qua timeoutSeconds thời gian chạy cuộc tranh cãi.

Lưu ý rằng thời gian thực thi chức năng có thể khác với thời gian sản xuất khi các chức năng được chạy trong trình giả lập. Chúng tôi khuyên bạn rằng sau khi đã 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 thi.

Lập kế hoạch cho sự khác biệt trong môi trường sản xuất và địa phương

Vì trình giả lập 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.

Lưu ý rằng môi trường cục bộ của bạn để phát triển các chức năng có thể khác với môi trường sản xuất của Google:

  • Ứng dụng mà bạn cài đặt tại địa phương để mô phỏng môi trường sản xuất (ví dụ như ImageMagick từ hướng dẫn này ) có thể khác nhau về hành vi từ khâu sản xuất, đặc biệt là nếu bạn yêu cầu một phiên bản khác nhau hoặc phát triển trong một môi trường phi Linux. Xem xét 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ự như vậy, được xây dựng trong các tiện ích (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 là nếu bạn đang phát triển trong một môi trường phi Linux (ví dụ, hệ điều hành MacOS). Bạn có thể xử lý vấn đề này bằng cách sử dụng các lựa chọn thay thế chỉ Node 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 để kết hợp với triển khai của bạn.

Đang thử lại

Trình giả lập Chức năng đám mây không hỗ trợ thử lại các chức năng khi bị lỗi.

Tiếp theo là gì?