Flutter 如何测试颤振/省道中多个列表项的顺序?
简介 我们有一个名为OrganizationList的Flutter 如何测试颤振/省道中多个列表项的顺序?,flutter,testing,dart,Flutter,Testing,Dart,简介 我们有一个名为OrganizationList的ListView,其中包含每个项目的ListTile小部件。我们使用文本小部件在列表中显示组织的名称 我们想测试组织名称是否正确显示,并且顺序是否正确 我们当前的解决方案 我们有以下主张: var organizationA = find .descendant( of: find.byType(OrganizationList), matching: find.byKey( K
ListView
,其中包含每个项目的ListTile
小部件。我们使用文本
小部件在列表中显示组织的名称
我们想测试组织名称是否正确显示,并且顺序是否正确
我们当前的解决方案
我们有以下主张:
var organizationA = find
.descendant(
of: find.byType(OrganizationList),
matching: find.byKey(
Key('0'),
),
)
.evaluate()
.first
.widget as Text;
expect(textOrganization.data, 'organization-a');
var organizationB = find
.descendant(
of: find.byType(OrganizationList),
matching: find.byKey(
Key('1'),
),
)
.evaluate()
.first
.widget as Text;
expect(textOrganization.data, 'organization-b');
如果为列表项显示了正确的标签,这感觉像是一种非常麻烦的测试方法。但我没有找到一个更优雅的方式
问题
在flatter/Dart中,哪种更优雅的方式可以同时声明列表项的内容和所有项的顺序?使用我的解决方案,您可以检查特定位置的ListItemWidget和文本是否可见(或不可见):
void checkPosition(int index, SomeObj obj, {bool isOnPosition = true}) {
final listItemFinder = find.byType(ListItemWidget);
final listItem = listItemFinder.evaluate().isEmpty
? null
: listItemFinder.at(index);
if (listItem == null) {
if (isOnPosition) {
fail('List not found');
}
return;
}
final positionText = find.text(obj.text);
expect(find.descendant(of: listItem, matching: positionText),
isOnPosition ? findsOneWidget : findsNothing);
}