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',因此不会扩展图块。因此,问题的解决方案有以下三种。

  1. 将 TextFormField 更改为文本
  2. 将只读更改为启用
  3. 编写测试代码以点击展开按钮而不是按键上的任何地方