Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

将应用连接到 Cloud Functions 模拟器

在将您的应用连接到 Cloud Functions 模拟器之前,请确保您了解 Firebase Local Emulator Suite 的整体工作流,而且已安装和配置 Local Emulator Suite 并已查看其 CLI 命令

选择一个 Firebase 项目

Firebase Local Emulator Suite 可以模拟单个 Firebase 项目的产品。

如需选择要使用的项目,请在启动模拟器之前在工作目录中运行 CLI 的 firebase use 命令。或者,您可以将 --project 标志传递给每个模拟器命令。

Local Emulator Suite 支持模拟实际 Firebase 项目和演示项目。

项目类型 特性 与模拟器结合使用
实际

实际的 Firebase 项目就是您创建和配置的项目(很可能是通过 Firebase 控制台)。

实际项目包含实时资源,例如数据库实例、存储桶、函数或您为该 Firebase 项目设置的任何其他资源。

使用实际的 Firebase 项目时,您可以为任何或所有受支持的产品运行模拟器。

对于您未模拟的任何产品,您的应用和代码都将与实时资源(数据库实例、存储桶、函数等)交互。

演示

演示 Firebase 项目没有实际 Firebase 配置,也没有实时资源。 这些项目通常可通过 Codelab 或其他教程访问。

演示项目的 ID 带有 demo- 前缀。

使用演示项目时,您的应用和代码仅与模拟器互动。如果您的应用尝试与您没有为其运行模拟器的资源进行交互,该代码将失败。

我们建议您尽可能使用演示项目。演示项目具有以下优势:

  • 设置更简单,因为您无需创建 Firebase 项目即可运行模拟器
  • 安全性更强,因为如果您的代码意外调用了非模拟(生产)资源,也不会发生数据更改、资源使用并产生费用
  • 提供更好的离线支持,因为无需访问互联网即可下载您的 SDK 配置。

对您的应用进行插桩处理以与模拟器通信

针对 Callable 函数对您的应用进行插桩处理

如果您的原型设计和测试活动涉及 Callable 后端函数,请按如下方式配置与 Cloud Functions for Firebase 模拟器的交互:

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);
iOS - Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web 版本 9

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

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

Web 版本 8

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

针对 HTTPS 函数模拟对您的应用进行插桩处理

代码中的每个 HTTPS 函数都将从本地模拟器按以下网址格式提供:

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

例如,采用默认主机端口和区域的简单 helloWorld 函数将在以下位置提供:

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

针对后台触发的函数模拟对您的应用进行插桩处理

Cloud Functions 模拟器支持以下来源的后台触发函数:

  • Realtime Database 模拟器
  • Cloud Firestore 模拟器
  • Authentication 模拟器
  • Pub/Sub 模拟器

要触发后台事件,请使用适用于您的平台的 SDK 将应用或测试代码连接到模拟器。

还有其他哪些工具可以用来测试 Cloud Functions 函数?

其他原型设计和测试工具可作为对 Cloud Functions 模拟器的补充:

  • Cloud Functions shell,允许对交互式迭代函数进行原型设计和开发。此 shell 采用带有 REPL 样式界面的 Cloud Functions 模拟器进行开发。未提供与 Cloud Firestore 或 Realtime Database 模拟器的集成。借助 shell,您可以模拟数据并执行函数调用,从而模拟与 Local Emulator Suite 目前不支持的产品(如 Cloud Storage、Pub/Sub、Analytics、Remote Config、Storage、Auth 和 Crashlytics)之间的交互方式。
  • Firebase Test SDK for Cloud Functions,一种使用 Mocha 框架进行函数开发的 Node.js 环境。事实上,Cloud Functions Test SDK 在 Cloud Functions shell 上提供了自动化功能。

如需详细了解 Cloud Functions shell 和 Cloud Functions Test SDK,请参阅以交互方式测试函数Cloud Functions 单元测试

后续步骤