Catch up on highlights from Firebase at Google I/O 2023. Learn more

使用擴展模擬器評估擴展

在將 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 具有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. 像往常一樣啟動 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 項目中安裝您的擴展程序

接下來是什麼?