Flutter小部件测试中如何使用List的find.byType匹配

Posted

技术标签:

【中文标题】Flutter小部件测试中如何使用List的find.byType匹配【英文标题】:How to use find.byType matching of List in Flutter widget testing 【发布时间】:2019-12-06 14:55:20 【问题描述】:

我想为 Stack 进行小部件测试。这是示例代码

final List<Widget> children = [];
final stack = Stack(children: children);
await tester.pumpWidget(Container(child: stack));
...

final stackFinder = find.byWidget(stack);
expect(stackFinder, findsOneWidget);

// children should be in Stack
final childrenFinder = find.descendant(
  of: stackFinder,
  matching: find.byType(children.runtimeType),
);
expect(childrenFinder, findsWidgets);

但得到错误:

Expected: at least one matching node in the widget tree
  Actual: ?:<zero widgets with type "List<Widget>" that has ancestor(s) with type "Stack"

我尝试将匹配更改为matching: find.byType([].runtimeType),matching: find.byType(List&lt;Widget&gt;),,但它也不起作用。

你知道怎么解决吗?或者,如果不可能,您使用哪种方法来验证里面的孩子的数量?

【问题讨论】:

【参考方案1】:

List&lt;Widgets&gt; 不是小部件。因此,您无法创建一个查找该类型的查找器。

您可以改为查找 Widget 并检查您是否找到了您期望的正确数量的小部件。

【讨论】:

以上是关于Flutter小部件测试中如何使用List的find.byType匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 小部件测试中执行缩放(捏缩放)多指手势?

如何在 Flutter 小部件测试中等待未来完成?

如何在 List 小部件 Flutter 中无上下文导航

如何在 Flutter 小部件中测试回调函数

在 Flutter 小部件测试中,如何验证字段验证错误消息?

Flutter:在小部件测试中测试异常