Написание юнит-тестов для Blo c Listener в Flutter - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь написать тестовые наборы виджетов для файла, который имеет списки blo c для различных состояний. Я пытаюсь запустить эти списки из моего тестового примера виджета, но я не могу это сделать. Отладчик никогда не доходит до BlocListener. Хотя он входит в BlocBuilder, но выходит после этого. Вот мой код для теста виджетов:

    testWidgets('calls listener on multiple state change', (tester) async {
    int latestState;
    var listenerCallCount = 0;
    final expectedStates = [InitialSocialFeedState(), InitiateSocialListPageFetchState(isRefreshed: true), EmptySocialList()];
    await tester.pumpWidget(
        SocialOnboardListner(socialFeedBloc)
    );
    socialFeedBloc.add(LoadSocialListPage(isRefreshed: true));
    expectLater(socialFeedBloc, emitsInOrder(expectedStates)).then((_) {
      expect(listenerCallCount, 1);
      expect(latestState, 3);
    });
  });

    class SocialOnboardListner extends StatelessWidget {
  SocialFeedBloc bloc;
  SocialOnboardListner(this.bloc);

  @override
  Widget build(BuildContext context) {
    return MediaQuery(
        data: MediaQueryData(),
        child: MaterialApp(
            locale: Locale("en"),
            localizationsDelegates: [
              AppLocalizationsDelegate(isTest: true),
              GlobalMaterialLocalizations.delegate,
              GlobalWidgetsLocalizations.delegate,
            ],
            home: BlocListener(
              bloc: bloc,
              listener: (context, state) {

              },
              child: SocialOnBoardPage(),
            )));
  }
}
...