Rasathurai Karan
Rasathurai Karan

Reputation: 801

The following message was thrown: Multiple exceptions (2) were detected during the running of the current test, and at least one was unexpected

In the widget tesitng in flutter . Every time I face this issue

I have doubt in method to dirrect the widget await tester.pumpWidget( UserDetails();

void main() {
  var emailField = find.byKey(Key("fname-field"));
  var passwordField = find.byKey(Key("lname-field"));
  var passwordField1 = find.byKey(Key("enumber-field"));
  var signInButton = find.text("SUBMIT");
  group("UserDetails  Screen test", () {
    testWidgets("Check the buttons in User screen",
        (WidgetTester tester) async {
      await tester.pumpWidget(  UserDetails()
      );
      await tester.pump();
      expect(emailField, findsOneWidget);
      expect(passwordField, findsOneWidget);
      expect(signInButton, findsOneWidget);
      expect(passwordField1, findsOneWidget);
    });
  });
}

here I got error like this

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════ The following message was thrown: Multiple exceptions (2) were detected during the running of the current test, and at least one was unexpected.

The following FirebaseException was thrown attaching to the render tree: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()

Upvotes: 1

Views: 3052

Answers (2)

Arman Laalfam
Arman Laalfam

Reputation: 69

If you use firebase you should mock you firebase first. I think it will work for you.

Wrap your widget to MaterialAapp and Scaffold.

Sometimes your widget hierarchy needs size of context that came from scaffold and MaterialApp context.

void main() {
   var emailField = find.byKey(Key("fname-field"));
   var passwordField = find.byKey(Key("lname-field"));
   var passwordField1 = find.byKey(Key("enumber-field"));
   var signInButton = find.text("SUBMIT");
   group("UserDetails  Screen test", () {
       testWidgets("Check the buttons in User screen",
           (WidgetTester tester) async {
                await tester.pumpWidget(
                    MaterialApp(
                        home: Scaffold(
                            body: UserDetails(),
                        ),
                    ),
                );
                await tester.pump();
                expect(emailField, findsOneWidget);
                expect(passwordField, findsOneWidget);
                expect(signInButton, findsOneWidget);
                expect(passwordField1, findsOneWidget);
        });
    });
}

Upvotes: 1

Josteve Adekanbi
Josteve Adekanbi

Reputation: 12703

Seems like you tried finding the widgets before the page was even pumped.

Change the scope like so:

void main() {
  group("UserDetails  Screen test", () {
    testWidgets("Check the buttons in User screen",
        (WidgetTester tester) async {
      await tester.pumpWidget(UserDetails());
      await tester.pumpAndSettle();
      await tester.pump();

      var emailField = find.byKey(Key("fname-field"));
      var passwordField = find.byKey(Key("lname-field"));
      var passwordField1 = find.byKey(Key("enumber-field"));
      var signInButton = find.text("SUBMIT");


      expect(emailField, findsOneWidget);
      expect(passwordField, findsOneWidget);
      expect(signInButton, findsOneWidget);
      expect(passwordField1, findsOneWidget);
    });
  });
}

Upvotes: 0

Related Questions