In diesem Fall gibt es verschiedene Möglichkeiten, die Ausnahme zu testen. Um einfach zu testen, ob eine Ausnahme ausgelöst:
expect(() => range(5, 5), throws);
zu testen, dass die richtige Art von Ausnahme ausgelöst wird:
expect(() => range(5, 2), throwsA(new isInstanceOf<ArgumentError>()));
, um sicherzustellen, dass keine Ausnahme ausgelöst wird:
expect(() => range(5, 10), returnsNormally);
zu Testen Sie den Ausnahmetyp und die Ausnahmemeldung:
expect(() => range(5, 3),
throwsA(predicate((e) => e is ArgumentError && e.message == 'start must be less than stop')));
hier ist ein weiterer Weg, dies zu tun:
expect(() => range(5, 3),
throwsA(allOf(isArgumentError, predicate((e) => e.message == 'start must be less than stop'))));
(Dank Graham Wheeler bei Google für die letzten 2 Lösungen).
I 'erwarten tat (Bereich (5, 3), throwsArgumentError) ', aber die Ausnahme wurde nicht innerhalb des Expect eingefangen. Das erste zu erwartende Argument muss eine anonyme Funktion sein, die beim Aufruf schließlich geworfen wird. Deine Antwort hat mir geholfen, diesen blöden Fehler zu finden, danke! – fgiraldeau