Cómo probar la navegación a través de Navigator en Flutter
Digamos que tengo una prueba para una pantalla en Flutter usandoWidgetTester
. Hay un botón que ejecuta una navegación a través deNavigator
. Me gustaría probar el comportamiento de ese botón.
Widget / Pantalla
class MyScreen extends StatefulWidget {
MyScreen({Key key}) : super(key: key);
@override
_MyScreenState createState() => _MyScreenScreenState();
}
class _MyScreenState extends State<MyScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).pushNamed("/nextscreen");
},
child: Text(Strings.traktTvUrl)
)
)
);
}
}
Prueb
void main() {
testWidgets('Button is present and triggers navigation after tapped',
(WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(home: MyScreen()));
expect(find.byType(RaisedButton), findsOneWidget);
await tester.tap(find.byType(RaisedButton));
//how to test navigator?
});
}
I hay una manera adecuada de cómo verificar, que se llamó Navigator? ¿O hay alguna forma de burlarse y reemplazar el navegador?
Por favor, tenga en cuenta que el código anterior fallará realmente con una excepción, porque no hay una ruta con nombre'/nextscreen'
declarado en la solicitud. Eso es simple de resolver y no necesita señalarlo.
Mi principal preocupación es cómo abordar correctamente este escenario de prueba en Flutter.