pubsubトリガーのcloud functionを自動テスト

モチベーション pubsub トリガーの cloud function は非同期にリクエストを投げるため、同期的な API と比べ自動テストを行なうのが困難です(成功失敗のレスポンスが帰ってこないため)。 また、今回僕が作成した function は特に gcp 上でテストを行ないたいものだったため、この問題を真剣に考える必要がありました。 pubsub のリクエストの確認 まず、テストを導入するにあたって、テストで topic を push するさいの方法を確認します。 以下のような形で topic の push をします。 $ gcloud pubsub topics publish sample-topic messageIds: - '2134505983662900' 上記のようにレスポンスで返ってくるのは message の ID のみです。 この情報からどのように cloud function の成功失敗を取ってくるかが肝になります。 cloud function に渡される情報 次に cloud function を見ていきます。cloud function で実行される関数は以下のようなものです。 type pubSubMessage struct { Data []byte `json:"data"` } func ExampleFunction(ctx context.Context, m pubSubMessage) error { // 処理... return nil } この ctx から metadata 関数を使用することで、EventID を取得することができます。 これが先程の messageIds の値と一致します。...

2021/03/18(作成日) · 2022/09/26(更新日)