在将 Extensions 模拟器与您的应用一起使用之前,请确保您了解整个 Firebase Local Emulator Suite 工作流程,并安装和配置Local Emulator Suite 并查看其CLI 命令。
本指南还假设您熟悉Firebase Extensions以及如何在您的 Firebase 应用程序中使用它们。
我可以使用 Extensions 模拟器做什么?
使用扩展模拟器,您可以在安全的本地环境中安装和管理扩展并更好地了解它们的功能,同时最大限度地降低计费成本。模拟器在本地运行您的扩展功能,包括使用 Cloud Firestore、实时数据库、Firebase 云存储、身份验证和 Pub/Sub 模拟器的后台事件触发功能,以及在 Cloud Functions v2 中实现的 Eventarc 触发功能。
选择一个 Firebase 项目
Firebase Local Emulator Suite 模拟单个 Firebase 项目的产品。
要选择要使用的项目,请在启动模拟器之前,在 CLI 中运行firebase use
在您的工作目录中使用。或者,您可以将--project
标志传递给每个模拟器命令。
Local Emulator Suite 支持模拟真实的Firebase 项目和演示项目。
项目类型 | 特征 | 与模拟器一起使用 |
---|---|---|
真实的 | 一个真正的 Firebase 项目是您创建和配置的项目(很可能是通过 Firebase 控制台)。 真实项目具有实时资源,例如数据库实例、存储桶、函数或您为该 Firebase 项目设置的任何其他资源。 | 在处理真实的 Firebase 项目时,您可以为任何或所有受支持的产品运行模拟器。 对于您未模拟的任何产品,您的应用程序和代码将与实时资源(数据库实例、存储桶、函数等)交互。 |
演示 | 一个演示 Firebase 项目没有真正的Firebase 配置,也没有实时资源。这些项目通常通过代码实验室或其他教程访问。 演示项目的项目 ID 具有 | 使用演示 Firebase 项目时,您的应用程序和代码仅与模拟器交互。如果您的应用程序尝试与未运行模拟器的资源进行交互,则该代码将失败。 |
我们建议您尽可能使用演示项目。好处包括:
- 设置更简单,因为您无需创建 Firebase 项目即可运行模拟器
- 更强的安全性,因为如果您的代码不小心调用了非模拟(生产)资源,就没有数据更改、使用和计费的机会
- 更好的离线支持,因为无需访问互联网即可下载您的 SDK 配置。
安装和评估扩展
使用扩展模拟器评估扩展是否满足您的需求非常简单。
假设您对触发电子邮件 ( firestore-send-email
)扩展感兴趣,尽管以下工作流涵盖了任何扩展。当使用本地模拟器运行时,Trigger Email 将自动使用 Cloud Firestore 和 Cloud Functions 模拟器。
要在本地评估扩展:
将扩展添加到本地扩展清单。扩展清单是扩展实例及其配置的列表。
firebase ext:install --local firebase/firestore-send-email
运行上述命令将提示您配置最新版本的
firebase/firestore-send-email
扩展并将配置保存到清单中,但不会将配置部署到您的项目中。有关详细信息,请参阅使用清单管理扩展配置像往常一样启动 Local Emulator Suite。
firebase emulators:start
现在,使用清单中列出的firestore-send-email
扩展实例,Local Emulator Suite 会将该扩展的源代码下载到~/.cache/firebase/extensions
。下载源后,Local Emulator Suite 将启动,您将能够触发任何扩展程序的后台触发功能,并将您的应用程序连接到 Local Emulator Suite 以测试它们与您的应用程序的集成。
您可以使用 Emulator Suite UI 将数据添加到电子邮件文档集合中,并根据触发电子邮件扩展的要求设置其他后端资源。
或者,对于持续集成工作流等非交互式测试环境,您可以编写一个测试脚本来评估扩展,除其他步骤外,还可以填充必要的 Cloud Firestore 数据并触发功能。然后您将调用 Local Emulator Suite 来执行您的测试脚本:
firebase emulators:exec my-test.sh
使用扩展模拟器进行测试与生产有何不同
Extensions 模拟器允许您以与生产体验非常匹配的方式测试扩展。但是,与生产行为有一些差异。
云 IAM
Firebase 模拟器套件不会尝试复制或遵守任何与 IAM 相关的运行行为。模拟器遵守提供的 Firebase 安全规则,但在通常使用 IAM 的情况下,例如设置 Cloud Functions 调用服务帐户和权限,模拟器不可配置,将使用开发人员计算机上的全局可用帐户,类似于直接运行本地脚本。
触发类型限制
目前,Firebase Local Emulator Suite 仅支持 HTTP 请求触发函数、扩展的 Eventarc 自定义事件触发器以及 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、Authentication 和 Pub/Sub 的后台事件触发函数。要评估使用其他类型的触发函数的扩展程序,您需要在测试 Firebase 项目中安装您的扩展程序。
接下来是什么?
- 如需一组精选的视频和详细的操作示例,请关注Firebase Emulators Training Playlist 。