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:
expect( () => 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)