使用扩展模拟器评估扩展

在将 Extensions 模拟器与您的应用一起使用之前,请确保您了解 Firebase Local Emulator Suite 的整体工作流程,并安装和配置Local Emulator Suite 并查看其CLI 命令

本指南还假设您熟悉Firebase 扩展以及如何在您的 Firebase 应用中使用它们

我可以用扩展模拟器做什么?

使用扩展模拟器,您可以在安全的本地环境中安装和管理扩展,并更好地了解它们的功能,同时最大限度地降低计费成本。模拟器在本地运行扩展程序的功能,包括使用 Cloud Firestore、实时数据库、云存储、身份验证和 Pub/Sub 模拟器的后台事件触发功能。

选择一个 Firebase 项目

Firebase 本地模拟器套件模拟单个 Firebase 项目的产品。

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

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

项目类型特征与模拟器一起使用
真实的

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

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

在处理真正的 Firebase 项目时,您可以为任何或所有受支持的产品运行模拟器。

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

演示

演示 Firebase 项目没有真正的Firebase 配置,也没有实时资源。这些项目通常通过代码实验室或其他教程访问。

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

使用演示 Firebase 项目时,您的应用和代码与模拟器交互。如果您的应用程序尝试与未运行模拟器的资源进行交互,则该代码将失败。

我们建议您尽可能使用演示项目。好处包括:

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

安装和评估扩展

使用扩展模拟器来评估扩展是否满足您的需求很简单。

假设您对触发电子邮件 ( firestore-send-email )扩展感兴趣,尽管以下工作流程涵盖任何扩展。使用本地模拟器运行时,Trigger Email 将自动使用 Cloud Firestore 和 Cloud Functions 模拟器。

要在本地评估扩展:

  1. 将扩展添加到本地扩展清单。扩展清单是扩展实例及其配置的列表。

    firebase ext:install --local firebase/firestore-send-email

    运行上述命令将提示您配置最新版本的firebase/firestore-send-email扩展并将配置保存到清单中,但不会将配置部署到您的项目中。有关这方面的更多信息,请参阅使用清单管理扩展配置

  2. 像往常一样启动本地模拟器套件。

    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 Emulator Suite 不会尝试复制或尊重任何与 IAM 相关的运行行为。模拟器遵守提供的 Firebase 安全规则,但在通常使用 IAM 的情况下,例如设置调用服务帐户的 Cloud Functions 并因此设置权限,模拟器是不可配置的,并将使用您的开发人员机器上的全局可用帐户,类似于直接运行本地脚本。

触发类型限制

目前,Firebase 本地模拟器套件仅支持 Cloud Firestore、实时数据库、云存储、身份验证和 Pub/Sub 的 HTTP 请求触发函数和后台事件触发函数。要评估使用其他类型触发函数的扩展程序,您需要在测试 Firebase 项目中安装您的扩展程序

接下来是什么?