🔥

Firebase Functionsのテストコード (firebase test jest)

2021/09/09に公開

前提条件

テスト用に無料でいいのでFirebaseのPJを作ってそれを利用しましょう。
(実際にfirestoreの書き込み等行うので本番と分けた方が良い。)

テストに必要なライブラリをインストール

npm install --save-dev firebase-functions-test
npm i -D ts-jest @types/jest 
npx ts-jest config:init

tsconfig.devを修正

diff --git a/functions/tsconfig.dev.json b/functions/tsconfig.dev.json
index 7560eed..ad935f2 100644
--- a/functions/tsconfig.dev.json
+++ b/functions/tsconfig.dev.json
@@ -1,5 +1,5 @@
 {
   "include": [
-    ".eslintrc.js"
+    ".eslintrc.js", "test"
   ]
 }
 

テストコードサンプル

import "jest";
import * as functions from "firebase-functions-test";
import * as myFunctions from "../src";

const testConfig = functions({
  storageBucket: "my-project.appspot.com", // firebase管理画面から取得
  projectId: "my-project",  // firebase管理画面から取得
}, "./test-server.json");


describe("servers", () => {
  let wrapped: any;

  beforeAll(
      () => {
      // myFunctions.testFuntionがテストするファンクション
        wrapped = testConfig.wrap(myFunctions.testFuntion);
      }
  );

  test("hoge", async () => {
    res:any = await wrapped({}, {});
    expect(res.data).toEqual(1);
  });
});

test-server.jsonは下記のfirebase管理画面からDL

テスト実行方法

下記をpackage.jsonのscriptsに追記。
npmスクリプトとして起動。

"test": "jest"

Discussion