masal9pse / flutter_search_repository_app

FlutterでAPIの検索結果を一覧表示するサンプルアプリです。
1 stars 0 forks source link

go_routerの導入 #9

Open masal9pse opened 1 year ago

masal9pse commented 1 year ago

初期は、Navigator.push、popを使用した画面遷移を利用していました。 が、その後Laravelのような宣言的な画面遷移に慣れていたのでそのやり方にしようと思い導入しました。

https://github.com/K9i-0/flutter_k9i_portfolio/blob/main/lib/router.dart

改善点

Navigator2.0を導入すればいけるはず?

結論

go_routerを導入したが、この問題は解決せず。

masal9pse commented 1 year ago

go_routerを導入後、tester.runAsyncを削除して失敗させるようなテストを記載してもなぜかテストが通ってしまう。 下記コードは詳細画面に遷移するのに、トップページのタイトルをチェックしてもテストがパスしてしまう。 https://github.com/masal9pse/flutter_search_repository_app/commit/b1a7321746b415f3dd52e5fc8d6b6ae2881fd54e

testWidgets('項目をタップすると、詳細画面に遷移すること',
          (WidgetTester tester) async {
        await tester.runAsync(
          () async {
            await tester.pumpWidget(
              ProviderScope(
                overrides: [
                  searchApiRepositoryProvider.overrideWithValue(
                    SearchFakeApiRepository(),
                  ),
                ],
                child: testMainViewWidget(),
              ),
            );

            await tester.enterText(
              find.byKey(AppKeyName.topPageSearchTextField),
              searchWord,
            );
            await tester.tap(
              find.byKey(AppKeyName.searchElevatedButton),
            );
            await tester.pumpAndSettle();
            await tester.tap(
              find.byKey(AppKeyName.responseDetailCard(0)),
            );
            await tester.pumpAndSettle();
            expect(find.text(PageInfoEnum.show.title), findsOneWidget);
           // 追加  なぜかパスしてしまう。
           expect(find.text(PageInfoEnum.top.title), findsOneWidget);
          },
        );
masal9pse commented 1 year ago

一旦、Navigator.pushとpopで対応する。 2回目の提出では、go_routerは導入しないようにする

後ほど下記参照してテストをパスさせたい https://guillaume.bernos.dev/testing-go-router/