Testing 如何测试颤振小部件';s固有尺寸

Testing 如何测试颤振小部件';s固有尺寸,testing,flutter,widget,Testing,Flutter,Widget,我有一个自定义文本小部件,我正在尝试测试该小部件对于某些文本字符串是否具有特定的内在大小 void main() { testWidgets('MongolRichText has correct size for string', (WidgetTester tester) async { await tester.pumpWidget(MongolRichText(text: TextSpan(text: 'hello'),)); final finder = find

我有一个自定义文本小部件,我正在尝试测试该小部件对于某些文本字符串是否具有特定的内在大小

void main() {
  testWidgets('MongolRichText has correct size for string', (WidgetTester tester) async {
    await tester.pumpWidget(MongolRichText(text: TextSpan(text: 'hello'),));

    final finder = find.byType(MongolRichText);
    expect(finder, findsOneWidget);

    // How do I check the size?
  });
}
如何检查小部件的固有大小

我不想限制屏幕的大小


我在flatter源代码中找到了答案,所以我将此作为问答对发布。我的答案如下。

WidgetTester上有一个
getSize
方法,您可以使用该方法获取小部件的渲染大小

void main() {
  testWidgets('MongolRichText has correct size for string', (WidgetTester tester) async {
    await tester.pumpWidget(Center(child: MongolText('Hello')));

    MongolRichText text = tester.firstWidget(find.byType(MongolRichText));
    expect(text, isNotNull);

    final Size baseSize = tester.getSize(find.byType(MongolRichText));
    expect(baseSize.width, equals(30.0));
    expect(baseSize.height, equals(150.0));
  });
}
注意事项:

  • 将自定义小部件放在
    中心
    小部件使其包装内容。否则,
    getSize
    将获得屏幕大小
  • 通过运行测试并查看实际值,我得到了实际值。它们似乎是合理的(
    text
    是垂直文本),所以我用预期的数字更新了测试以使测试通过
  • 此解决方案改编自