W tym przypadku istnieją różne sposoby testowania wyjątku. Po prostu sprawdzić, że jest wyjątek:
expect(() => range(5, 5), throws);
przetestować że odpowiedni rodzaj jest wyjątek:
expect(() => range(5, 2), throwsA(new isInstanceOf<ArgumentError>()));
aby upewnić się, że nie jest wyjątek:
expect(() => range(5, 10), returnsNormally);
do Przetestuj typ wyjątku i wyjątek:
expect(() => range(5, 3),
throwsA(predicate((e) => e is ArgumentError && e.message == 'start must be less than stop')));
tutaj jest kolejnym sposobem, aby to zrobić:
expect(() => range(5, 3),
throwsA(allOf(isArgumentError, predicate((e) => e.message == 'start must be less than stop'))));
(Dzięki Graham Wheeler w Google przez ostatnie 2 rozwiązań).
robiłem 'spodziewać (zakres (5, 3), throwsArgumentError) ', ale wyjątek nie spełnił oczekiwań. Pierwszym argumentem, którego należy się spodziewać, musi być anonimowa funkcja, która zostanie ostatecznie wywołana po wywołaniu. Twoja odpowiedź pomogła mi znaleźć ten głupi błąd, dzięki! – fgiraldeau