chrisedg87 / flutter_rounded_loading_button

A simple implementation of an animated loading button widget for Flutter
MIT License
325 stars 87 forks source link

Flutter Widget Test doesn't seem to work. #57

Open patterueldev opened 2 years ago

patterueldev commented 2 years ago

I have two options when executing a tap:

/* by type: */ await tester.tap(find.byType(RoundedLoadingButton), warnIfMissed: true);
/* by key: */ await tester.tap(find.byKey(const Key("signInButton")), warnIfMissed: true);

But neither of them works at all. I get errors when trying to verify a certain function from a mock instance which is expected to be executed when the button is tapped.

This works with a regular TextButton by the way.

patterueldev commented 2 years ago

I found the reason. This widget has its own test, and I analyzed the difference. It turns out the animateOnTap deems the test tap not work if enabled. For testing's sake, I turn it to false when testing:

RoundedLoadingButton(
  controller: _signInButtonController,
  child: const Text("SIGN IN"),
  onPressed: () => context
      .read<SignInBloc>()
      .add(SignInTapEvent(context)),
  animateOnTap: !Platform.environment
      .containsKey('FLUTTER_TEST'),
)

But it would be nice if we can still test it even if animateOnTap = true during tests.