目录

use_test_throws_matchers

使用 throwsA 匹配器而不是 fail()。

此规则从 Dart 2.14 开始可用。

详情

#

使用 throwsA 匹配器而不是使用 try-catch 和 fail()

错误示例

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'));
}

正确示例

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'))),
);

用法

#

要启用 use_test_throws_matchers 规则,请在你的 analysis_options.yaml 文件中的 linter > rules 下添加 use_test_throws_matchers

analysis_options.yaml
yaml
linter:
  rules:
    - use_test_throws_matchers