💡

【Flutter】FakeFirestoreを使ったRiverPod+ToDoAppのunitテストをやってみた。

2023/05/16に公開

概要

RiverPodでテストコードの書き方がわからなかったのでやってみた。

使用するもの

https://pub.dev/packages/fake_cloud_firestore/score

コード

fake_add_test.dart

void main() async {
  group('postのテスト', () {
    late final ProviderContainer container;

//FakeFirebaseFirestoreがfirebaseFirestoreProviderの代わりにoverrideされて使われる。
    setUp(() {
      container = ProviderContainer(overrides: [
        firebaseFirestoreProvider.overrideWithValue(FakeFirebaseFirestore()),
      ]);
    });

    test('addPostメソッドテスト', () async {
      ///ここでは引数が必要だが、今回は『テスト』をしているので、自分で作成する。
      ///その値とFirebaseから取得した値が一緒になることを確認する
      const post = Post(
        id: '12345',
        text: 'こんにちは',
        title: 'おはようございます',
      );
      await container.read(toDoRepositoryProvider).addPost(post);
      final posts = await container.read(postStreamProvider.future);

      expect(posts.length, equals(1));
      expect(posts.first.text, equals('こんにちは'));
      expect(posts.first.title, equals('おはようございます'));
      print(posts.length);
      print(posts.first.text);
      print(posts.first.title);
      
    });
  });
}

print結果

 print(posts.length);→1
 print(posts.first.text);→こんにちは
 print(posts.first.title);→おはようございます。

Discussion