【问题标题】:How do I test an assertion?如何测试断言?
【发布时间】:2020-02-11 10:45:17
【问题描述】:

我发现了如何测试异常或错误: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>()));
  });
}

【问题讨论】:

标签: flutter dart flutter-test


【解决方案1】:

这有两个关键方面:

例子:

expect(() {
  assert(false);
}, throwsAssertionError);

应用于问题中的代码:

void main() {
  test('cannoBeNull assertion', () {
    expect(() => cannotBeNull(null), throwsAssertionError);
  });
}

为什么我们需要传递回调?好吧,如果你有一个没有参数的函数,你也可以传递一个 reference 给它。

如果没有回调,则断言将在 expect 执行之前进行评估,expect 将无法捕获错误。通过传递一个回调,我们允许expect 调用该回调,这允许它捕获AssertionError 并能够处理它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-11
    • 2020-05-29
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    相关资源
    最近更新 更多