cre*_*not 5 dart flutter flutter-test
我发现了如何测试异常或错误:https : //stackoverflow.com/a/54241438/6509751
但是如何测试以下内容assert是否正常工作?
void cannotBeNull(dynamic param) {
assert(param != null);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法,但不起作用。断言被简单地打印出来并且测试失败:
void main() {
test('cannoBeNull assertion', () {
expect(cannotBeNull(null), throwsA(const TypeMatcher<AssertionError>()));
});
}
Run Code Online (Sandbox Code Playgroud)
cre*_*not 10
这有两个关键方面:
将回调传递给expect. 当你这样做时,你永远不会做错事,即使你只是实例化一个对象。这已在链接的答案中显示。
例子:
expect(() {
assert(false);
}, throwsAssertionError);
Run Code Online (Sandbox Code Playgroud)
应用于问题中的代码:
void main() {
test('cannoBeNull assertion', () {
expect(() => cannotBeNull(null), throwsAssertionError);
});
}
Run Code Online (Sandbox Code Playgroud)
为什么我们需要传递回调?好吧,如果你有一个没有参数的函数,你也可以传递一个对它的引用。
如果没有回调,断言将在expect执行之前进行评估,并且无法expect捕获错误。通过传递回调,我们允许expect调用该回调,这允许它捕获AssertionError并处理它。
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |