使用 Extensions Emulator 評估擴充功能

在應用程式中使用擴充功能模擬器前,請務必瞭解整體 Firebase 本機模擬器套件的工作流程,並安裝及設定本機模擬器套件並查看其 CLI 指令

本指南也假設您已熟悉 Firebase Extensions,以及如何在 Firebase 應用程式中使用

我可以用擴充功能模擬器做什麼?

有了擴充功能模擬器,您可以在安全的本機環境中安裝及管理擴充功能,進一步瞭解各項功能,同時盡可能降低帳單費用。模擬器會在本機執行擴充功能的函式,包括使用 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、驗證和 Pub/Sub 模擬器,以及 Cloud Functions v2 中實作的 Eventarc 觸發函式,包括背景事件觸發的函式。

選擇 Firebase 專案

Firebase 本機模擬器套件可模擬單一 Firebase 專案中的產品。

如要選取要使用的專案,請先透過 CLI 在工作目錄中執行 firebase use,再啟動模擬器。或者,您也可以將 --project 標記傳遞至每個模擬器指令。

本機模擬器套件支援模擬「實際」的 Firebase 專案和示範專案。

專案類型 功能與特色 與模擬器搭配使用
真實

真正的 Firebase 專案是您建立及設定的專案 (很有可能透過 Firebase 控制台進行)。

真實專案包含使用中的資源,例如資料庫執行個體、儲存空間值區、函式,或是您為該 Firebase 專案設定的任何其他資源。

使用實際的 Firebase 專案時,您可以針對任何或所有支援的產品執行模擬器。

針對並非您要模擬的任何產品,應用程式和程式碼會與即時資源 (資料庫執行個體、儲存空間值區、函式等) 互動。

示範

示範 Firebase 專案沒有實際的 Firebase 設定,也沒有即時資源。一般來說,您可以透過程式碼研究室或其他教學課程存取這些專案。

示範專案的專案 ID 含有 demo- 前置字串。

使用示範 Firebase 專案時,您的應用程式和程式碼「只會」與模擬器互動。如果應用程式嘗試與未執行模擬器的資源互動,該程式碼將會失敗。

建議您盡可能使用示範專案。Meet 具備以下優點:

  • 設定更簡單,因為您無須建立 Firebase 專案即可執行模擬器
  • 安全性較高,因為如果程式碼意外叫用非模擬的 (正式環境) 資源,就無法變更資料、使用及計費
  • 改善離線支援功能,因為不需透過網際網路即可下載 SDK 設定。

安裝及評估擴充功能

使用擴充功能模擬器評估擴充功能是否符合需求相當簡單。

假設您對觸發條件電子郵件 (firestore-send-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 擴充功能執行個體,本機模擬器套件就會將該擴充功能的原始碼下載至 ~/.cache/firebase/extensions。下載 Soure 後,本機模擬器套件將啟動,然後您就可以觸發擴充功能的任何背景觸發的函式,並將應用程式連線至本機模擬器套件,以測試這些套件與應用程式的整合情形。

您可以使用模擬器套件 UI,根據觸發事件電子郵件擴充功能的要求,將資料新增至電子郵件文件集合,並設定其他後端資源。

或者,針對非互動式測試環境 (例如持續整合工作流程),您可以編寫測試指令碼來評估擴充功能,進而填入必要的 Cloud Firestore 資料和觸發條件函式。然後叫用本機模擬器套件來執行測試指令碼:

firebase emulators:exec my-test.sh

使用擴充功能模擬器進行測試與正式版的差異

擴充功能模擬器可讓您測試擴充功能,其方式與實際執行體驗非常吻合。不過,與實際工作環境的行為之間仍有些許差異。

Cloud IAM

Firebase 模擬器套件不會試圖複製或尊重任何在執行時與 IAM 相關的行為。模擬器符合所提供的 Firebase 安全性規則,但在通常會使用 IAM 的情況下 (例如設定 Cloud Functions 叫用服務帳戶,因此權限),模擬器將無法設定,而且將使用開發人員機器上的全域可用帳戶,類似直接執行本機指令碼。

觸發類型限制

目前 Firebase 本機模擬器套件僅支援 HTTP 要求觸發函式、擴充功能的 Eventarc 自訂事件觸發條件,以及 Cloud Firestore、即時資料庫、Cloud Storage for Firebase、驗證和 Pub/Sub 的背景事件觸發函式。如要評估使用其他類型的已觸發函式的擴充功能,您必須在測試 Firebase 專案中安裝擴充功能

接下來呢?