WidgetTestでGoRouterでの画面遷移をモックする

Photo by José Martín Ramírez Carrasco / Unsplash

Widget TestでGoRouterのモックを利用するにはInheritedGoRouter WidegtをWidgetツリーに組み込むと良いのですが、GoRouterライブラリではInheritedGoRouterはexportされておらず、利用できませんでした。

ということでFlutter PackagesのIssueとPRを作成してGoRouterに取り込んでもらいました。

すでにリリースされているので、Widget Testでは以下のようにGoRouterのモックを組み込むことができます。

  testWidgets('mediates Widget\'s access to GoRouter.',
      (WidgetTester tester) async {
    final MockGoRouter router = MockGoRouter();
    await tester.pumpWidget(MaterialApp(
        home: InheritedGoRouter(goRouter: router, child: const _MyWidget())));
    await tester.tap(find.text('My Page'));
    expect(router.latestPushedName, 'my_page');
  });
Ryoichi Izumita

Ryoichi Izumita