Это имеет два ключевых аспекта:
Передать обратный вызов на expect
. Когда вы делаете это, вы никогда не можете сделать что-то неправильно, даже если вы просто создаете экземпляр объекта. Это уже было показано в связанном ответе .
Использование throwAssertionError
.
Пример:
expect(() {
assert(false);
}, throwsAssertionError);
Применяется к коду из вопроса:
void main() {
test('cannoBeNull assertion', () {
expect(() => cannotBeNull(null), throwsAssertionError);
});
}
Зачем нам передавать обратный вызов? Хорошо, если у вас есть функция без параметров, вы также можете передать ей ссылку .
Если обратного вызова не было, утверждение будет оценено до выполнения expect
и expect
не сможет поймать ошибку. Передавая обратный вызов, мы разрешаем expect
вызывать этот обратный вызов, что позволяет ему перехватить AssertionError
и он может обработать его.