如何测试Flutter小部件的固有大小

时间:2019-11-26 03:10:05

标签: 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.byType(MongolRichText);
    expect(finder, findsOneWidget);

    // How do I check the size?
  });
}

如何检查窗口小部件的固有大小?

我并不想像this question那样限制屏幕尺寸。

我在Flutter源代码中找到了答案,因此我将其作为问答集发布。我的答案在下面。

1 个答案:

答案 0 :(得分:0)

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));
  });
}

注释:

  • 将自定义窗口小部件放入Center小部件中可使其包装内容。否则getSize将获得屏幕尺寸。
  • 通过运行测试并查看实际值应该得到实际值。它们似乎是合理的(MongolRichText是竖排文字),所以我用期望的数字更新了测试以使测试通过。
  • 此解决方案改编自Futter Text widget testing source code