使用擴展模擬器評估擴展

在將 Extensions 模擬器與您的應用一起使用之前,請確保您了解 Firebase Local Emulator Suite 的整體工作流程,並安裝和配置Local Emulator Suite 並查看其CLI 命令

本指南還假設您熟悉Firebase 擴展以及如何在您的 Firebase 應用中使用它們

我可以使用擴展模擬器做什麼?

使用擴展模擬器,您可以在安全的本地環境中安裝和管理擴展,並更好地了解它們的功能,同時最大限度地降低計費成本。模擬器在本地運行擴展程序的功能,包括使用 Cloud Firestore、實時數據庫、雲存儲、身份驗證和 Pub/Sub 模擬器的後台事件觸發功能,以及在 Cloud Functions v2 中實現的 Eventarc 觸發功能。

選擇一個 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 本地模擬器套件僅支持 HTTP 請求觸發函數、Eventarc 擴展自定義事件觸發器,以及 Cloud Firestore、實時數據庫、雲存儲、身份驗證和 Pub/Sub 的後台事件觸發函數。要評估使用其他類型觸發函數的擴展程序,您需要在測試 Firebase 項目中安裝您的擴展程序

接下來是什麼?