Не удается найти виджеты в тесте внутри Consumer Widget провайдера - PullRequest
2 голосов
/ 26 апреля 2020

Я создал следующий тест Flutter для своего виджета

testWidgets("", (WidgetTester tester) async {
      await tester.pumpWidget(
        ChangeNotifierProvider<SettingsViewProvider>(
          create: (context) => SettingsViewProvider(),
          child: MaterialApp(
            localizationsDelegates: [S.delegate],
            home: SettingsScreen(),
          ),
        ),
      );

      final textFormFieldFinder = find.byElementType(TextFormField);
      await tester.pump();
      expect(textFormFieldFinder, findsNWidgets(3));
    });

Виджет является виджетом с состоянием, который использует ChangeNotifierProvider, а потребитель окружает список из трех «TextFormFields».

Consumer<State>(
   builder: (context, value, child)=> Column(
       children: [TextFormField(...), TextFormField(...), TextFormField(...)];
   )
)

Ожидается: ровно 3 совпадающих узла в дереве виджетов

Факт: _ElementTypeFinder:

Что: означает, что ни одного не найдено, но некоторые ожидаются

К сожалению, я получаю, что виджет не найден в дереве виджетов.

1 Ответ

0 голосов
/ 06 мая 2020

кажется, что она решается с помощью:

final textFormFieldFinder = find.byType(TextFormField);

вместо:

final textFormFieldFinder = find.byElementType(TextFormField);
...