ふくしま

ソフトウェアエンジニア

Flutter で Firebase との Integration Test を行った話(セキリティルールつき)

やりたいこと

Flutter で Firebase とやり取りをする Repository 層のクラスの挙動をテストしたい。

しかし、FireStore などにおいてセキュリティルールを設けている場合は、アプリへのユーザログイン(Firebase認証)が必要である。

本記事では、「アプリへの電話番号認証 -> Firebase への通信」を行う。

統合テスト

アプリへのログイン

アプリへのログインはSMSログイン、つまり電話番号認証で行う。 電話番号認証の場合、ユーザはアプリに電話番号を入力して、Firebase から6桁の番号(確認コード)をSMSで受け取り、それをアプリに入力する。 これをテストケースで再現する必要がある。

電話番号と確認コードを固定する

Firebase では、テスト用に架空の電話番号を登録し、その電話番号と固定の確認コードを紐づけることができる。

やり方は公式ドキュメントを参照されたし。

Widget を操作する

WidgetTester に対して、enter やら tap やら pump をして操作をする。 サンプルコードはこちら

Flutter と Firebase のやりとりをテストする

Integration Test を書く。 サンプルコードはこちら

参考文献