Flutter: Testing for exceptions in widget tests


How do I go about making sure the ui (widget) throws an exception during widget testing in Flutter. Here is my code that does not work:

  () => tester.tap(find.byIcon(Icons.send)),
  throwsA(const TypeMatcher<UnrecognizedTermException>()),

It fails with the following error

Expected: throws <Instance of 'TypeMatcher<UnrecognizedTermException>'>
  Actual: <Closure: () => Future<void>>
   Which: returned a Future that emitted <null>

OR……should I be testing how the UI handles an exception by looking for error messages, etc??


To catch exceptions thrown in a flutter test, use WidgetTester.takeException. This returns the last exception caught by the framework.

await tester.tap(find.byIcon(Icons.send));
expect(tester.takeException(), isInstanceOf<UnrecognizedTermException>());

You also don’t need a throwsA matcher, since it is not being thrown from the method.

Answered By – Jonah Williams

Answer Checked By – David Marino (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *