我正在 Dart 中实现一些数据验证库。验证方法具有 void
返回类型并在错误时抛出异常。下面的代码显示了一个示例。
import 'package:quiver/check.dart';
void validate(int value) {
checkArgument(value >= 0 && value <= 100);
}
在单元测试中,我可以使用以下代码来测试无效输入的异常情况:
expect(() => validate(-1), throwsArgumentError);
但是,如何验证该方法不会对有效输入抛出异常?
最佳答案
package:test
提供了一个 returnsNormally
匹配器
。您将以与 throwsA
/etc 相同的方式使用它。 Matcher
匹配零参数函数的位置:
expect(() => validate(-1), returnsNormally);
即使允许您的函数抛出未捕获的异常最终会导致测试失败,无论如何,使用 returnsNormally
可以导致更清晰的失败消息。
为了完整性(没有双关语意),异步函数的等价物是使用 completes
匹配器:
await expectLater(someAsynchronousFunction(), completes);
关于unit-testing - 在 Dart 中,如何在单元测试中验证不抛出异常的 void 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65853973/