我发现了如何测试异常或错误:https://stackoverflow.com/a/54241438/6509751
但是我如何测试以下assert
正常工作?
void cannotBeNull(dynamic param) {
assert(param != null);
}
我尝试了以下操作,但不起作用。断言只是打印出来,测试失败:
void main() {
test('cannoBeNull assertion', () {
expect(cannotBeNull(null), throwsA(const TypeMatcher<AssertionError>()));
});
}
答案 0 :(得分:0)
这有两个关键方面:
将回调传递给expect
。执行此操作时,即使仅实例化一个对象,也永远不会做错任何事情。已经显示in the linked answer。
示例:
expect(() {
assert(false);
}, throwsAssertionError);
应用于问题中的代码:
void main() {
test('cannoBeNull assertion', () {
expect(() => cannotBeNull(null), throwsAssertionError);
});
}
我们为什么需要传递回调?好吧,如果您有一个没有参数的函数,则也可以向该函数传递一个 reference 。
如果没有回调,则将在执行expect
之前评估该断言,并且expect
将无法捕获错误。通过传递回调,我们允许expect
调用该回调,这使它可以捕获AssertionError
并能够处理它。