Google 致力于为黑人社区推动种族平等。查看具体举措
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

在本地運行功能

Firebase CLI包括一個Cloud Functions仿真器,可以仿真以下功能類型:

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

您可以在本地運行功能以對其進行測試,然後再部署到生產環境中。

安裝Firebase CLI

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

npm install -g firebase-tools

為了使用本地仿真器,您的雲功能必須依賴於:

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

設置管理員憑據(可選)

如果您希望功能測試通過Firebase Admin SDK與Google API或其他Firebase API交互,則可能需要設置管理員憑據。

  • 雲和的FireStore實時數據庫觸發器已經有足夠的憑據,並且不需要額外的設置。
  • 所有其他API,包括Firebase API(例如Authentication和FCM)或Google API(例如Cloud Translation或Cloud Speech),都需要本節中介紹的設置步驟。無論您使用的是函數shell還是firebase emulators:start這都適用。

要為模擬功能設置管理員憑據,請執行以下操作:

  1. 打開Google Cloud Console的“服務帳戶”窗格
  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
    

完成這些步驟後,您的功能測試可以使用Admin SDK訪問Firebase和Google API。例如,在測試身份驗證觸發器時,仿真函數可以調用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
firebase functions:shell

運行仿真器套件

要運行雲功能模擬器,請使用emulators:start命令:

firebase emulators:start

emulators:start命令將根據您在本地項目中使用firebase init初始化的產品,啟動Cloud Functions,Cloud Firestore,實時數據庫和Firebase託管的模擬器。如果要啟動特定的仿真器,請使用--only標誌:

firebase emulators:start --only functions

如果要在仿真器啟動後運行測試套件或測試腳本,請使用emulators:exec命令:

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

測試您的應用以與仿真器對話

為了檢測您的應用程序以與仿真器進行交互,您可能需要進行一些其他配置。

檢測您的應用程序是否具有可調用的功能

如果您的原型和測試活動涉及可調用的後端函數,請像下面這樣配置與Cloud Functions for Firebase模擬器的交互:

安卓
        // 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-Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web v8

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

Web v9

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

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

檢測您的應用程序以進行HTTPS功能仿真

您的代碼中的每個HTTPS函數都將使用以下URL格式從本地仿真器提供服務:

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

例如,具有默認主機端口和區域的簡單helloWorld函數將在以下位置提供:

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

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

雲功能模擬器支持來自以下來源的背景觸發功能:

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

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

與其他服務的互動

該仿真器套件包括多個仿真器,它們可以測試跨產品的交互。

Cloud Firestore

如果您具有使用Firebase Admin SDK寫入Cloud Firestore的Cloud Functions,則這些寫入將被發送到Cloud Firestore模擬器(如果正在運行)。如果這些寫操作觸發了進一步的Cloud Functions,則它們將在Cloud Functions模擬器中運行。

Firebase託管

如果您使用Cloud Functions為Firebase Hosting生成動態內容firebase emulators:start將使用本地HTTP函數作為託管代理。

記錄中

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

下一步

有關使用Firebase模擬器套件的完整示例,請參閱測試快速入門示例