How to test a Flutter application using Firebase?

606

Posting this as a community wiki as it's based on @GuilhermeGabanelli's comment.

If you check this flutterfire documentation on how to perform unit tests with Firebase Services you will see that:

The Firebase libraries need to run on an actual device or emulator. So if you want to run unit tests, you'll have to use Fakes instead. A Fake is a library that implements the API of a given Firebase library and simulates its behavior.

...

When initializing your app, instead of passing the actual instance of a Firebase library (e.g. FirebaseFirestore.instance if using Firestore), you pass an instance of a fake (e.g. FakeFirebaseFirestore()). Then the rest of your application will run as if it were talking to Firebase.

Followed by an example with sample code. I believe this is the cause of the issue you are facing and if you change your code to use Fakes this should be fixed.

Share:
606
Admin
Author by

Admin

Updated on December 30, 2022

Comments

  • Admin
    Admin over 1 year

    I am using Flutter and Firebase as my database. I want to do some unit test of my application, but when I start this test :

    testWidgets('MyWidget has a title and message', (WidgetTester tester) async {
        // Create the widget by telling the tester to build it.
        await tester.pumpWidget(LoginPage());
    
        expect(true, true);
    });
    

    I have the Exception :

    No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()

    But Firebase.initializeApp() is called in my main.dart here :

    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      runApp(MyApp());
    }
    

    And I don't know how to initialize the Firebase app in my test.