使用 Extensions 模擬器搭配應用程式前,請務必瞭解整體 Firebase Local Emulator Suite 工作流程,並安裝及設定 Local Emulator Suite,然後查看其 CLI 指令。
本指南也假設您已熟悉 Firebase Extensions,以及如何在 Firebase 應用程式中使用這些功能。
Extensions模擬器有什麼用途?
您可以使用 Extensions 模擬器在安全的本機環境中安裝及管理擴充功能,進一步瞭解擴充功能的功能,同時盡量減少帳單費用。模擬器會在本地執行擴充功能的函式,包括使用 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、Authentication 和 Pub/Sub 模擬器觸發的背景事件函式,以及在 Cloud Functions v2 中實作的 Eventarc 觸發函式。
選擇 Firebase 專案
Firebase Local Emulator Suite 會模擬單一 Firebase 專案的產品。
如要選取要使用的專案,請先啟動模擬器,然後在 CLI 中於工作目錄執行 firebase use。或者,您也可以將 --project 標記傳遞至每個模擬器指令。
Local Emulator Suite 支援模擬實際 Firebase 專案和示範專案。
| 專案類型 | 功能 | 搭配模擬器使用 |
|---|---|---|
| Real |
實際的 Firebase 專案是指您建立及設定的專案 (很可能透過 Firebase 控制台)。 實際專案具有即時資源,例如資料庫執行個體、儲存空間值區、函式,或是您為該 Firebase 專案設定的任何其他資源。 |
使用實際的 Firebase 專案時,您可以為任何或所有支援的產品執行模擬器。 對於您未模擬的任何產品,應用程式和程式碼都會與實際資源 (資料庫執行個體、儲存空間 bucket、函式等) 互動。 |
| 示範 |
示範 Firebase 專案沒有實際 Firebase 設定,也沒有即時資源。這些專案通常透過程式碼研究室或其他教學課程存取。 示範專案的專案 ID 前置字串為 |
使用 Firebase 示範專案時,應用程式和程式碼只會與模擬器互動。如果應用程式嘗試與未執行模擬器的資源互動,該程式碼就會失敗。 |
建議您盡可能使用示範專案。包括以下優點:
- 設定更簡單,因為您不必建立 Firebase 專案,就能執行模擬器
- 安全性更高,因為如果程式碼意外叫用非模擬 (正式版) 資源,就不會發生資料變更、用量和帳單問題
- 離線支援功能更完善,因為您不需要連上網際網路即可下載 SDK 設定。
安裝及評估擴充功能
使用 Extensions 模擬器評估擴充功能是否符合需求,方法非常簡單。
假設您對「觸發電子郵件」(firestore-send-email) 擴充功能感興趣,但以下工作流程適用於任何擴充功能。使用本機模擬器執行時,「觸發電子郵件」會自動使用 Cloud Firestore 和 Cloud Functions 模擬器。
如要在本機評估擴充功能,請按照下列步驟操作:
將擴充功能新增至本機擴充功能資訊清單。擴充功能資訊清單是擴充功能執行個體及其設定的清單。
firebase ext:install --local firebase/firestore-send-email
執行上述指令後,系統會提示您設定最新版本的
firebase/firestore-send-email擴充功能,並將設定儲存至資訊清單,但不會將設定部署至專案。如要進一步瞭解這項功能,請參閱「使用資訊清單管理擴充功能設定」。照常啟動 Local Emulator Suite。
firebase emulators:start
現在,Local Emulator Suite 會使用資訊清單中列出的 firestore-send-email 擴充功能執行個體,將該擴充功能的原始碼下載至 ~/.cache/firebase/extensions。下載來源後,Local Emulator Suite 就會啟動,您將能觸發任何擴充功能的背景觸發函式,並將應用程式連線至 Local Emulator Suite,測試與應用程式的整合。
您可以透過 Emulator Suite UI 將資料新增至電子郵件文件集合,並視需要設定其他後端資源,以符合 Trigger Email 擴充功能的要求。
此外,對於持續整合工作流程等非互動式測試環境,您可以編寫測試指令碼來評估擴充功能,其中包含填入必要 Cloud Firestore 資料和觸發函式等步驟。接著,您會叫用 Local Emulator Suite 來執行測試指令碼:
firebase emulators:exec my-test.sh使用 Extensions 模擬器測試與實際執行的差異
Extensions 模擬器可讓您測試擴充功能,測試方式與實際環境的使用體驗非常相似。不過,這與實際運作行為有些差異。
Cloud 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 專案中安裝擴充功能。
後續步驟
- 如需一系列精選影片和詳細使用說明範例,請觀看 Firebase 模擬器訓練播放清單。