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:
// 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:
// 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:
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:
linter:
rules:
use_test_throws_matchers: true
除非另有说明,文档之所提及适用于 Dart 3.12.2 版本报告页面问题.