在應用程式使用 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 2.0 中實作的 Eventarc 觸發函式。
選擇 Firebase 專案
Firebase Local Emulator Suite 會模擬單一 Firebase 專案的產品。
如要選取要使用的專案,請在啟動模擬器前,在工作目錄的 CLI 中執行 firebase use
。或者,您也可以將 --project
標記傳遞至每個模擬器指令。
Local Emulator Suite 支援模擬實際 Firebase 專案和示範專案。
專案類型 | 功能 | 搭配模擬器使用 |
---|---|---|
真實 |
真正的 Firebase 專案是您建立及設定的專案 (最有可能是透過 Firebase 主控台)。 實際專案會有即時資源,例如資料庫執行個體、儲存值區、函式,或您為該 Firebase 專案設定的任何其他資源。 |
使用實際的 Firebase 專案時,您可以為任何或所有支援的產品執行模擬器。 對於您未模擬的任何產品,應用程式和程式碼會與實際資源 (資料庫執行個體、儲存空間 bucket、函式等) 互動。 |
示範 |
示範 Firebase 專案沒有實際的 Firebase 設定,也沒有實際資源。這些專案通常是透過程式碼研究室或其他教學課程存取。 示範專案的專案 ID 會加上 |
使用 Firebase 示範專案時,應用程式和程式碼只會與模擬器互動。如果應用程式嘗試與模擬器未執行的資源互動,該程式碼就會失敗。 |
建議您盡可能使用示範專案。Meet 具備以下優點:
- 設定更簡單,因為您可以不必建立 Firebase 專案,即可執行模擬器
- 安全性更高,因為如果程式碼不小心叫用未模擬的 (實際) 資源,就不會發生資料變更、使用和帳單問題
- 提供更完善的離線支援功能,因為您不需要連上網際網路即可下載 SDK 設定。
安裝及評估擴充功能
使用 Extensions 模擬器評估擴充功能是否符合您的需求,方法相當簡單。
假設您有興趣使用「觸發電子郵件」(firestore-send-email
) 擴充功能,但以下工作流程涵蓋任何擴充功能。使用本機模擬器執行時,Trigger 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 將資料新增至電子郵件文件集合,並視「觸發電子郵件」擴充功能的需求設定其他後端資源。
或者,如果是持續整合工作流程等非交互式測試環境,您可以編寫測試指令碼來評估擴充功能,在其他步驟中填入必要的 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 模擬器訓練播放清單。