use_ test_ throws_ matchers
Learn about the use_test_throws_matchers linter rule.
Use throwsA matcher instead of fail().
Details
#Use the throwsA matcher instead of try-catch with fail().
BAD:
dart
// sync code try { someSyncFunctionThatThrows(); fail('expected Error'); } on Error catch (error) { expect(error.message, contains('some message')); } // async code try { await someAsyncFunctionThatThrows(); fail('expected Error'); } on Error catch (error) { expect(error.message, contains('some message')); } GOOD:
dart
// sync code expect( () => someSyncFunctionThatThrows(), throwsA(isA<Error>().having((Error error) => error.message, 'message', contains('some message'))), ); // async code await expectLater( () => someAsyncFunctionThatThrows(), throwsA(isA<Error>().having((Error error) => error.message, 'message', contains('some message'))), );
Enable
# To enable the use_test_throws_matchers rule, add use_test_throws_matchers under linter > rules in your analysis_options.yaml file:
analysis_options.yaml
yaml
linter: rules: - use_test_throws_matchers If you're instead using the YAML map syntax to configure linter rules, add use_test_throws_matchers: true under linter > rules:
analysis_options.yaml
yaml
linter: rules: use_test_throws_matchers: true Was this page's content helpful?
Unless stated otherwise, the documentation on this site reflects Dart 3.10.3. Report an issue.