在本地運行函數

Firebase CLI 包含一個 Cloud Functions 模擬器,它可以模擬以下函數類型:

  • HTTPS 功能
  • 可調用函數
  • 從身份驗證、實時數據庫、Cloud Firestore 和 Cloud Pub/Sub 觸發的後台函數。

您可以在本地運行函數以在部署到生產之前對其進行測試。

安裝 Firebase CLI

要使用 Cloud Functions 模擬器,請先安裝 Firebase CLI:

npm install -g firebase-tools

為了使用本地模擬器,您的 Cloud Functions 必須依賴於:

  • firebase-admin版本8.0.0或更高版本。
  • firebase-functions版本3.0.0或更高版本。

設置管理員憑據(可選)

如果你希望你的功能測試,通過與谷歌的API或其他火力地堡的API互動火力地堡管理員SDK ,您可能需要設置管理員憑據。

  • 雲和的FireStore實時數據庫觸發器已經有足夠的憑據,並且不需要額外的設置。
  • 所有其他 API,包括 Firebase API(例如 Authentication 和 FCM)或 Google API(例如 Cloud Translation 或 Cloud Speech)都需要本部分中描述的設置步驟。這適用無論你正在使用的功能殼或firebase emulators:start

要為模擬功能設置管理員憑據:

  1. 打開服務帳戶窗格中的谷歌雲控制台。
  2. 確保App Engine的默認服務帳戶被選中,並使用選項菜單右側選擇創建關鍵
  3. 提示時,選擇JSON的密鑰類型,然後單擊創建
  4. 將您的 Google 默認憑據設置為指向下載的密鑰:

    Unix

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase emulators:start
    

    視窗

    $ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    
    $ firebase emulators:start
    

完成這些步驟後,你的功能測試可以訪問使用火力地堡和谷歌的API管理SDK 。例如,在測試的認證觸發時,仿真功能可以調用admin.auth().getUserByEmail(email)

設置功能配置(可選)

如果您使用自定義的功能配置變量,首先運行命令,讓您的自定義配置(在中運行此functions目錄)在本地環境:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

運行模擬器套件

要運行雲功能仿真器,使用emulators:start命令:

firebase emulators:start

emulators:start命令將啟動模擬器雲功能,雲計算公司的FireStore,實時數據庫,火力地堡託管根據您在使用本地項目初始化產品firebase init 。如果你想啟動一個特定的仿真器,使用--only標誌:

firebase emulators:start --only functions

如果你想運行模擬器後一個測試套件或測試腳本已經開始,使用emulators:exec命令:

firebase emulators:exec "./my-test.sh"

檢測您的應用程序以與模擬器對話

要檢測您的應用程序以與模擬器交互,您可能需要進行一些額外的配置。

為您的應用檢測可調用函數

如果您的原型和試驗活動,包括調用後台功能,與火力地堡模擬器這樣的雲功能配置的互動:

安卓
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFunctions functions = FirebaseFunctions.getInstance();
        functions.useEmulator("10.0.2.2", 5001);
iOS - 斯威夫特
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

網頁版 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

網頁版 8

firebase.functions().useEmulator("localhost", 5001);

為您的應用程序檢測 HTTPS 功能模擬

代碼中的每個 HTTPS 函數都將使用以下 URL 格式從本地模擬器提供:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

例如一個簡單helloWorld使用默認的主機端口和區域功能將在提供服務:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

為您的應用程序檢測後台觸發的功能仿真

Cloud Functions 模擬器支持來自以下來源的後台觸發函數:

  • 實時數據庫模擬器
  • Cloud Firestore 模擬器
  • 身份驗證模擬器
  • 發布/訂閱模擬器

要觸發後台事件,請使用適用於您平台的 SDK 將您的應用程序或測試代碼連接到模擬器。

與其他服務的交互

模擬器套件包括多個模擬器,可用於測試跨產品交互。

雲防火牆

如果您有使用 Firebase Admin SDK 寫入 Cloud Firestore 的 Cloud Functions,這些寫入將發送到 Cloud Firestore 模擬器(如果它正在運行)。如果這些寫入觸發了更多 Clo​​ud Functions,它們將在 Cloud Functions 模擬器中運行。

Firebase 託管

如果你使用雲功能來生成火力地堡託管動態內容firebase emulators:start使用當地的HTTP作為代理託管。

日誌記錄

模擬器將日誌從您的函數流式傳輸到它們運行的終端窗口。它顯示所有輸出console.log() console.info() console.error()console.warn()語句的函數中。

下一步

對於使用火力地堡仿真器套件的一個完整的例子,請參見測試快速啟動示例