Почему flutter-test не отображает текстовый виджет в следующем случае? - PullRequest
1 голос
/ 15 апреля 2019

У меня есть виджет с именем GiftGrid, который отображает виджет-заполнитель Text, когда он не получает элементов, но тест, который проверяет конкретный случай, не выполняется, даже если он отлично работает в приложении:

testWidgets('Null list shows placeholder', (WidgetTester tester) async {
    await tester.pumpWidget(MaterialApp(
        localizationsDelegates: [MyLocalizationsDelegate()],
        home: GiftGrid(null)));
    var a = tester.allWidgets.toList();
    expect(find.text("PROPER_QUADRUPLE_CHECKED_STRING"), findsOneWidget);
  });

, где GiftGrid определяется следующим образом:

return (widget.giftList?.isEmpty ?? true)
        ? Center(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: Text(MyLocalizations.of(context).stringThatTranslatesToSameAsTest),
            ),
          ) : StaggeredGridBuilder(...);

Отладчик показывает содержимое a следующим образом (извините за скриншот, я не смог найти лучший способ показать это): Contents of a as defined in test case

РЕДАКТИРОВАТЬ: GifGrid получает список в качестве параметра и проходит следующий тест:

  testWidgets('Gift shows thumbnail if available', (WidgetTester tester) async {
    var gift = GiftModel()
      ..images = [
        "OTHER_IMG_LINK"
      ]
      ..thumbnail =
          "IMG_LINK";

    // Build our app and trigger a frame.
    await tester.pumpWidget(MaterialApp(
      home: GiftGrid([gift]),
    ));

    expect(find.byWidgetPredicate((widget) {
      return widget is TransitionToImage &&
          (widget.image as AdvancedNetworkImage).url ==
              "IMG_LINK";
    }), findsOneWidget);
  });

...