Eu tenho 2 widgets
1 com um assert
em seu build
método:
class MyWidget1 extends StatelessWidget {
const MyWidget1({super.key});
@override
Widget build(BuildContext context) {
assert(false);
return const Placeholder();
}
}
1 com um assert
retorno de chamada de um botão:
class MyWidget2 extends StatelessWidget {
const MyWidget2({super.key});
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
assert(false);
},
child: const Text('button'),
);
}
}
Quero um teste que verifique o que assert
é lançado. A partir desta questão , tentei:
void main() {
testWidgets('It should throw an assert error during the build',
(WidgetTester tester) async {
await expectLater(
() => tester.pumpWidget(const MaterialApp(home: MyWidget1())),
throwsA(isA<AssertionError>()),
);
});
testWidgets('It should throw an assert error on tap',
(WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(
home: Scaffold(
body: MyWidget2(),
),
));
await expectLater(
() async {
await tester.tap(find.byType(TextButton));
await tester.pumpAndSettle();
},
throwsAssertionError,
);
});
}
Mas os erros não são detectados pelas expectativas.
Como testar?
Você pode usar
FlutterError.onError
para isso: