Reputation: 801
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
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
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