如果我有
class ErrorThrower{
void throwAnError(String argument){
throw new Error();
}
}
我想测试throwAnError是否引发Exception,或更准确地说是
Error
的实例这是我的代码,但是不起作用
test('', () {
var errorThrower = new ErrorThrower();
expect(errorThrower.throwAnError("string"), throwsException);
});
最佳答案
Dart的测试包可以检测到抛出的错误,但是该函数要么需要异步(最常见的是返回Future
),要么作为回调提供,因此expect
函数可以对它进行延迟评估。在您的示例中:
test('', () {
var errorThrower = new ErrorThrower();
expect() => errorThrower.throwAnError("string"), throwsError);
});
... 应该管用。请注意,我写的不是
throwsError
的throwsException
,在Dart中这是两种不同的东西(它们彼此不会继承),目的是不会在生产代码中故意捕获错误,而应该捕获异常(例如FormatException
)。