Flutter 测试看不到扩展磁贴的内容
Flutter test can't see content of expansion tile
我正在尝试测试我的代码,我遇到了一个问题,即 flutter 测试很难找到扩展图块下的内容。
虽然小部件检查器确实找到了项目 (widget inspector ss),所以我对这个问题有点困惑。
这是我的简化扩展图块代码
ExpansionTile(
key: Key('ExpansionTile'),
initiallyExpanded: expand,
title: TextFormField(
readOnly: true,
initialValue: name,
),
children: [mainTable],
)
这是我的简单代码 table,我的测试人员正试图找到它
var mainTable = Table(
key: Key('Table'),
children: [],
);
最后,这是我的测试代码
testWidgets('Verify expansion tile has a table', (WidgetTester tester) async {
await tester.pumpWidget(MyApp(appData));
var finder = find.byKey(Key('ExpansionTile'));
expect(finder, findsOneWidget); // works
await tester.ensureVisible(finder);
await tester.tap(finder);
await tester.pumpAndSettle();
expect(find.byKey(Key('Table')), findsOneWidget); // fails
});
在我认为原本无关的事情之后,问题得到了解决。扩展磁贴的标题通过 textformfield 显示,在我的代码中有 属性 'readOnly'。问题是,当测试通过按键找到图块时,它可能会点击图块的区域,该区域也是 'selectable',因此不会扩展图块。因此,问题的解决方案有以下三种。
- 将 TextFormField 更改为文本
- 将只读更改为启用
- 编写测试代码以点击展开按钮而不是按键上的任何地方
我正在尝试测试我的代码,我遇到了一个问题,即 flutter 测试很难找到扩展图块下的内容。
虽然小部件检查器确实找到了项目 (widget inspector ss),所以我对这个问题有点困惑。
这是我的简化扩展图块代码
ExpansionTile(
key: Key('ExpansionTile'),
initiallyExpanded: expand,
title: TextFormField(
readOnly: true,
initialValue: name,
),
children: [mainTable],
)
这是我的简单代码 table,我的测试人员正试图找到它
var mainTable = Table(
key: Key('Table'),
children: [],
);
最后,这是我的测试代码
testWidgets('Verify expansion tile has a table', (WidgetTester tester) async {
await tester.pumpWidget(MyApp(appData));
var finder = find.byKey(Key('ExpansionTile'));
expect(finder, findsOneWidget); // works
await tester.ensureVisible(finder);
await tester.tap(finder);
await tester.pumpAndSettle();
expect(find.byKey(Key('Table')), findsOneWidget); // fails
});
在我认为原本无关的事情之后,问题得到了解决。扩展磁贴的标题通过 textformfield 显示,在我的代码中有 属性 'readOnly'。问题是,当测试通过按键找到图块时,它可能会点击图块的区域,该区域也是 'selectable',因此不会扩展图块。因此,问题的解决方案有以下三种。
- 将 TextFormField 更改为文本
- 将只读更改为启用
- 编写测试代码以点击展开按钮而不是按键上的任何地方