Firebase Data Connect 提供本機模擬器,可用於端對端原型設計,以及持續整合和持續部署 (CI/CD) 流程:
- Data Connect 模擬器會與本機整合的 PGLite 資料庫執行個體互動,讓您在完全本機環境中建立查詢和變異型原型,並測試用戶端程式碼。
- Data Connect 模擬器也可用於非互動工作。可讓您執行自動化測試,並適合搭配 CI/CD 工作流程使用。當結構定義穩定且您想製作原型並測試用戶端程式碼時,這項功能就非常實用。
本指南會比快速入門更詳細地說明模擬器的安裝和使用方式。
安裝 Data Connect 模擬器
在安裝 Local Emulator Suite 以使用 Data Connect 模擬器前,您需要:
- Node.js 18.0 以上版本。
安裝 Firebase CLI 並設定專案目錄
請按照安裝指南安裝 Firebase CLI。Data Connect 模擬器仍處於積極開發階段,因此請務必定期更新,以便修正錯誤並新增功能。
如果您尚未將目前的工作目錄初始化為 Firebase 專案,請按照提示指定要使用的產品:
firebase init
設定或修改 Local Emulator Suite 設定
如果您是透過 Firebase VS Code 擴充功能啟動 Data Connect 模擬器,系統會視需要為您安裝模擬器。
您可以使用 Firebase CLI 手動安裝模擬器,以及 Local Emulator Suite 的其他所選元件。這個指令會啟動設定精靈,讓您選取感興趣的模擬器、下載對應的模擬器二進位檔案,以及在預設值不合適時設定模擬器連接埠。
firebase init emulators
安裝模擬器後,系統不會執行更新檢查,也不會在您更新 Firebase CLI 版本前,自動下載其他內容。
選擇 Firebase 專案
在設定流程中,Firebase CLI 會提示您選擇或建立 Firebase 專案。如果您在 Firebase 控制台中選擇已透過 Data Connect 設定的現有專案,系統會建議您在該專案中選擇的設定。
設定模擬器
設定模擬器
執行 firebase init
流程時,系統會引導您設定模擬器。與 Local Emulator Suite 中的其他模擬器一樣,設定參數會儲存在本機專案檔案中。
firebase.json
檔案含有模擬器通訊埠指派項目。emulators:ui
鍵不適用於 Data Connect 模擬器。
使用本機和實際工作環境的 Data Connect 資源
如要確保不會影響實際資源,請設定 demo-
projectID,或是確保您的用戶端程式碼已檢測並連線至模擬器,如後續章節所述。
啟動模擬器
如果您要以非交互方式執行模擬器 (例如 CI/CD 工作流程),請使用 exec
選項啟動模擬器。
firebase emulators:exec ./path/to/test-script.sh
如果您要在用戶端程式碼中整合預先定義的查詢和變異,並且要使用模擬器專門測試用戶端,則可以使用 start
選項進行互動作業。您也可以透過 VS Code 擴充功能啟動模擬器。
firebase emulators:start
檢測用戶端程式碼,與模擬器通訊
如要設定應用程式內設定或測試類別,以便與 Data Connect 模擬器互動,請按照下列步驟操作:
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
使用模擬器進行測試和持續整合
執行容器化 Local Emulator Suite 映像檔
在一般 CI 設定中,使用容器安裝及設定 Local Emulator Suite 相當簡單。
請注意以下幾點:
- 模擬器二進位檔會在
~/.cache/firebase/emulators/
安裝及快取。建議您將這個路徑新增至 CI 快取設定,以免重複下載。 - 如果儲存庫中沒有
firebase.json
檔案,您必須在emulators:start
或emulators:exec
指令中新增指令列引數,指定要啟動的模擬器。例如:--only dataconnect
。
在測試之間清除資料庫
如要在測試執行之間重設測試環境,Firebase 建議您採取下列做法:
- 編寫專屬變異來處理下列項目:
- 在設定期間,請使用起始資料填入本機資料庫例項。
- 在解構作業中,從測試後資料庫執行個體中刪除修改過的資料。
Data Connect 模擬器與實際環境的差異
Data Connect 模擬器可模擬伺服器端產品的許多功能。不過,請注意以下例外狀況:
- PGLite 的版本和詳細設定可能與您正式版 Cloud SQL 執行個體的版本不同。
- 如果您使用模擬器開發 Data Connect 的 pgvector 和 Vertex API 整合,系統會直接呼叫 Cloud Vertex API,而非透過 Cloud SQL 的 Vertex 整合。不過,系統仍會呼叫正式版 API,也就是說您必須使用實際的 Firebase 專案 (無法使用
demo-
專案),並且會產生 Vertex API 費用。