在應用程式中使用擴充功能模擬器前,請務必瞭解整體 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 含有 |
使用示範 Firebase 專案時,您的應用程式和程式碼「只會」與模擬器互動。如果應用程式嘗試與未執行模擬器的資源互動,該程式碼將會失敗。 |
建議您盡可能使用示範專案。Meet 具備以下優點:
- 設定更簡單,因為您無須建立 Firebase 專案即可執行模擬器
- 安全性較高,因為如果程式碼意外叫用非模擬的 (正式環境) 資源,就無法變更資料、使用及計費
- 改善離線支援功能,因為不需透過網際網路即可下載 SDK 設定。
安裝及評估擴充功能
使用擴充功能模擬器評估擴充功能是否符合需求相當簡單。
假設您對觸發條件電子郵件 (firestore-send-email
) 擴充功能感興趣,但下列工作流程涵蓋所有擴充功能。使用本機模擬器執行時,觸發電子郵件會自動使用 Cloud Firestore 和 Cloud Functions 模擬器。
如何在本機評估擴充功能:
在本機擴充功能資訊清單中新增擴充功能。擴充功能資訊清單是擴充功能執行個體及其設定的清單。
firebase ext:install --local firebase/firestore-send-email
執行上述指令會提示您設定最新版本的
firebase/firestore-send-email
擴充功能,並將設定儲存至資訊清單,但不會將設定部署至專案。詳情請參閱「使用資訊清單管理擴充功能設定」一文照常啟動本機模擬器套件。
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 專案中安裝擴充功能。
接下來呢?
- 如需一系列精選影片和詳細教學範例,請參閱 Firebase Emulator 訓練播放清單。