Trong trường hợp này, có nhiều cách khác nhau để kiểm tra ngoại lệ. Chỉ đơn giản là kiểm tra rằng một ngoại lệ được nâng lên:
expect(() => range(5, 5), throws);
để kiểm tra rằng đúng loại ngoại lệ xảy ra:
expect(() => range(5, 2), throwsA(new isInstanceOf<ArgumentError>()));
để đảm bảo rằng không có ngoại lệ xảy ra:
expect(() => range(5, 10), returnsNormally);
để kiểm tra loại ngoại lệ và thông báo ngoại lệ:
expect(() => range(5, 3),
throwsA(predicate((e) => e is ArgumentError && e.message == 'start must be less than stop')));
.210
đây là một cách khác để làm điều này:
expect(() => range(5, 3),
throwsA(allOf(isArgumentError, predicate((e) => e.message == 'start must be less than stop'))));
(Nhờ Graham Wheeler tại Google trong 2 giải pháp cuối cùng).
Nguồn
2012-11-08 22:33:34
tôi đang làm 'mong đợi (phạm vi (5, 3), throwsArgumentError) ', nhưng ngoại lệ không được nắm bắt bên trong mong đợi. Đối số đầu tiên mong đợi phải là một hàm ẩn danh mà cuối cùng sẽ ném khi được gọi. Câu trả lời của bạn đã giúp tôi tìm ra lỗi ngu ngốc đó, cảm ơn! – fgiraldeau