In questo caso, esistono diversi modi per verificare l'eccezione. Per testare semplicemente che un'eccezione viene sollevata:
expect(() => range(5, 5), throws);
Per verificare che il tipo giusto di eccezione viene sollevata:
expect(() => range(5, 2), throwsA(new isInstanceOf<ArgumentError>()));
per garantire che nessuna eccezione è sollevata:
expect(() => range(5, 10), returnsNormally);
a prova il tipo di eccezione e il messaggio di eccezione:
expect(() => range(5, 3),
throwsA(predicate((e) => e is ArgumentError && e.message == 'start must be less than stop')));
qui è un altro modo per farlo:
expect(() => range(5, 3),
throwsA(allOf(isArgumentError, predicate((e) => e.message == 'start must be less than stop'))));
(Grazie a Graham Wheeler a Google per gli ultimi 2 soluzioni).
fonte
2012-11-08 22:33:34
stavo facendo 'aspettano (gamma (5, 3), throwsArgumentError) ', ma l'eccezione non è stata inclusa nell'aspettativa. Il primo argomento da aspettarsi deve essere una funzione anonima che alla fine verrà lanciata quando chiamata. La tua risposta mi ha aiutato a trovare questo stupido errore, grazie! – fgiraldeau