FirebaseFunctionsの実践的TDD開発

FirebaseFunctionsのテスト方法についてのまとめと実践的プラクティスを紹介

必要なツール

Jest

Jest はシンプルさを重視した、快適な JavaScript テスティングフレームワーク。導入も非常に簡単

# Firebase Local Emulator Suite

Firebase Local Emulator Suite は、Cloud Firestore、Realtime Database、Authentication、Cloud Functions、Pub/Sub、Firebase Hosting を使用してアプリをローカルでビルドおよびテストするデベロッパー向けの高度なツールセットです。機能が豊富なユーザー インターフェースを備えており、アプリの本稼働やプロトタイピングにかかる時間を短縮できます。

取り扱うテストの種類

単体テスト

プログラムを構成する比較的小さな単位のテスト。FirebaseFunctionのテスト

インテグレーションテスト

FirebaseFunctionの関数が成功するかのテスト

テストのステップ

1. Controller層とTrigger層に分離する

Trigger層とは

export const test = functions.https.onRequest(async (req, res) => {
  const controller = new TestController();
  await contoller.execute();
  res.sendStatus(200);
}

2. Controller層でのメソッドをFirebaseAdminSdkを扱っている処理と扱っていない処理で分けるようにする

3.JestでFirebaseAdminSdk非依存の単体テストを書く

4. Integrationテスト

Integrationテストのセットアップ方法

残る課題

  • emulator経由で、firebase admin sdkでデータを取得しても取得できない

諸処疑問点

メモ

  • emulatorをstartする前にtypescriptをcompileする必要がある(emulatorはそこまでやってくれない)
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy