🌽
Firebase functionsで定期実行関数のローカルテスト
定期実行関数をローカルでテストしたい
Firebase functionsでは時間のかかる処理や、スケジュール実行する関数は
PubSubを使って関数を定義できます。
自分も定期実行できる関数を作ってて、いざローカルテストしようと思ったけど、
やり方とか調べるのに少し時間がかかったので、備忘録として残します。
準備
まず、PubSub用のEmulatorが必要ですので、Emulatorをインストールします。
Firebase init
メニューからEmulatorを選択して、各種エミュレーターからPubSubを選択。
これでPubSub関数を実行する準備は整いました。
次にスケジュール関数を用意する。
毎時5分ごとに実行する関数
index.js
const functions = require('firebase-functions')
exports.scheduledFunction = functions.pubsub
.schedule('every 5 minutes')
.onRun(context => {
console.log('This will be run every 5 minutes!')
return null
})
これをデプロイすれば、5分おきに実行されるんだけど、ローカルのエミュレーター環境だと何故か定期実行されない。
仕方がないのでshell
から手動で関数実行します。
Emulatorでテスト
Macターミナルからエミュレーター起動
firebase emulators:start
別のターミナルから更にshellを起動、すると対話形式で入力できるので、
実行する関数を入力します。
firebase functions:shell
firebase > scheduledFunction()
すると、関数の結果が得られるかと思います。
This will be run every 5 minutes!
詳しくは公式サイトへ
参考:
Discussion