Flutter - Firestore 테스트

8051 단어

소개



오늘은 Flutter 환경에서 Firestore를 테스트하는 방법을 공유하고자 합니다. 이미 시도했다면 Firestore 연결이 테스트 모드에서 작동하지 않는다는 것을 알고 있을 것입니다. 따라서 Firestore 인스턴스를 조롱해야 합니다. Flutter의 경우 fake_cloud_firestore에 언급된 FlutterFire을 사용할 수 있습니다.

이번 포스트에서는 Firestore와 상호작용하는 리포지토리 단위 테스트를 작성하는 방법에 대해 설명하겠습니다.

Firestore를 테스트하는 방법을 배우고 싶다면 실제 Firebase 프로젝트가 필요하지 않습니다.

설정



먼저 테스트 프로젝트를 생성합니다.

flutter create test_fake_cloud_firestore


둘째, 아래 패키지를 설치해야 합니다.

flutter pub add cloud_firestore
flutter pub add fake_cloud_firestore


  • cloud_firestore
  • 타입 사용시 필요
  • fake_cloud_firestore → 모의 Firestore 필요

  • Firestore를 사용하여 TestRepository 작성



    이제 lib 디렉토리 아래에 test_repository.dart를 생성합니다.

    cd test_fake_cloud_firestore
    touch ./lib/test_repository.dart
    


    그런 다음 Firestore와 상호 작용하는 방법이 있는 TestRepository 클래스로 위 파일을 채웁니다. 테스트용이므로 실제 Firebase 프로젝트가 필요하지 않습니다. collection 또는 doc의 경로는 테스트 파일에서 사용되므로 원하는 경로를 구성하고 나중에 해당 경로를 사용하십시오.

    아래는 제가 테스트한 클래스입니다.

    import 'package:cloud_firestore/cloud_firestore.dart';
    
    class TestRepository {
      final FirebaseFirestore firestore;
      TestRepository({required this.firestore});
    
      late final countDoc = firestore.doc('test/doc_12345');
    
      Future<int?> fetch() async {
        final snapshot = await countDoc.get();
        return snapshot.data()?['count'];
      }
    }
    


    생성자를 통해 Firestore 인스턴스를 넘겨주었다는 점에 유의하십시오. 종속성(이 경우 Firestore 인스턴스)을 주입하면 모의 인스턴스로 테스트하기 쉬운 저장소를 갖게 됩니다.

    test_repository_test.dart 생성



    그런 다음 _test 디렉터리 아래에 이름이 test로 끝나는 테스트 파일을 만들어야 합니다.

    touch ./test/test_repository_test.dart
    


    테스트 파일에서 void main() 명령을 실행할 때 실행할 flutter test 함수를 선언합니다.

    void main() {}
    


    FakeFirestore를 사용하여 테스트 콘텐츠 작성



    이제 메인 함수를 테스트 코드로 채웁니다.

    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:fake_cloud_firestore/fake_cloud_firestore.dart';
    import 'package:test_fake_cloud_firestore/test_repository.dart';
    import 'package:flutter_test/flutter_test.dart';
    
    void main() {
      group('Test fake_cloud_firestore', () {
        // 1
        final firestore = FakeFirebaseFirestore();
        late TestRepository testRepository;
        setUp(
          () {
            // 2
            testRepository = TestRepository(firestore: firestore);
            // 3
            setDummyFirestore(firestore);
          },
        );
    
        test('Test fetch data', () async {
          // 4
          final result = await testRepository.fetch();
          expect(result, 2);
        });
      });
    }
    
    setDummyFirestore(FirebaseFirestore firestore) {
      firestore.collection('test').doc('doc_12345').set({
        'count': 4,
      });
    }
    


  • 먼저 flutter_test 패키지를 사용하여 테스트를 쉽게 실행하십시오. ( group , setUp , test , expect )
  • 번호별로 단계를 설명하겠습니다.
  • 먼저 FakeFirebaseFirestore를 초기화합니다.
  • setUp에서 가짜 Firestore 인스턴스로 초기화testRepository합니다.
  • 그런 다음 테스트를 위해 가짜 Firestore에 데이터를 설정합니다. 이 경우 'test/doc_12345'의 'count' 필드를 숫자로 설정해야 합니다.
  • 테스트 방법을 실행하고 result 변수에 올바른 값이 있는지 확인합니다.


  • 마지막으로 프로젝트 루트 디렉터리에서 아래 명령어로 테스트를 실행합니다.

    flutter test
    


    이 테스트는 실패하고 다른 값(2 및 4)을 기록해야 합니다.

    즉, 이제 모의 인스턴스로 Firebase Firestore 연결 로직을 안전하게 테스트할 수 있습니다.

    결론



    Firebase와 Flutter는 종종 함께 사용됩니다. 이 기사가 테스트 실습에 도움이 되었기를 바랍니다.

    건배!

    좋은 웹페이지 즐겨찾기