Как мне проверить утверждение? - PullRequest
0 голосов
/ 14 октября 2019

Я узнал, как можно проверить исключение или ошибку: 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 голосов
/ 14 октября 2019

Это имеет два ключевых аспекта:

  • Передать обратный вызов на expect. Когда вы делаете это, вы никогда не можете сделать что-то неправильно, даже если вы просто создаете экземпляр объекта. Это уже было показано в связанном ответе .

  • Использование throwAssertionError.

Пример:

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

Применяется к коду из вопроса:

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

Зачем нам передавать обратный вызов? Хорошо, если у вас есть функция без параметров, вы также можете передать ей ссылку .

Если обратного вызова не было, утверждение будет оценено до выполнения expectи expect не сможет поймать ошибку. Передавая обратный вызов, мы разрешаем expect вызывать этот обратный вызов, что позволяет ему перехватить AssertionError и он может обработать его.

...