Модульное тестирование Flutter - невозможно прокачать полное дерево виджетов - PullRequest
0 голосов
/ 26 мая 2020

Я только начал работать с модульным тестированием во Flutter и наткнулся на стену. У меня есть довольно простое приложение, расположенное здесь: https://github.com/chuckntaylor/kwjs_flutter_demo

По сути, это приложение представляет собой список событий, где вы можете нажать на одно, чтобы узнать больше о событии.

KWJS Flutter App in action

Для этого у меня есть два экрана: events_screen.dart для просмотра списка и event_screen.dart для деталей. Я пытался написать свои тесты в events_screen_test.dart

. Мои трудности с тестированием связаны с экраном событий (представлением списка). После запуска await tester.pumpWidget(MaterialApp(home: EventsScreen()) я могу использовать find.text('Events'), например, чтобы найти заголовок в AppBar, но я не могу найти ни одного из элементов, составляющих список.

Для дальнейшего пояснения. Я использую get_it как serviceLocator, чтобы получить viewModel для EventsScreen при его загрузке. ViewModel - это ChangeNotifierProvider, а EventsScreen содержит Consumer для обновления списка. в EventsScreen initState() он вызывает loadEvents () в viewModel. После выполнения loadEvents () viewModel вызывает notifyListeners (), чтобы EventsScreen мог обновиться.

Как мне убедиться, что все эти шаги выполняются, чтобы я мог правильно проверить, правильно ли рендерится EventsScreen?

Я мог бы неправильно подойти к этому вопросу, поэтому приветствую любые советы.

1 Ответ

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

Я решил свою проблему, но, возможно, кто-то сможет пролить свет на это. В итоге я выполнил:

await tester.pumpWidget(MaterialApp(home: EventsScreen(),));
// followed immediately by this second pump without arguments
await tester.pump();

На этом этапе дерево виджетов было завершено, и я мог создавать Finders, как я надеялся, и мог без проблем запускать все мои операторы ожидания.

Я не уверен, почему это работает.

...