我如何测试一个断言?

时间:2019-10-14 19:34:09

标签: flutter dart flutter-test

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

1 个答案:

答案 0 :(得分:0)

这有两个关键方面:

示例:

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

应用于问题中的代码:

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

我们为什么需要传递回调?好吧,如果您有一个没有参数的函数,则也可以向该函数传递一个 reference

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