【问题标题】:How to test a Flutter widget's intrinsic size如何测试 Flutter 小部件的固有大小
【发布时间】:2020-03-21 09:56:51
【问题描述】:

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

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 源代码中找到了答案,因此我将其发布为问答对。我的答案如下。

【问题讨论】:

    标签: testing flutter widget


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 2019-02-25
      • 2019-10-31
      • 2022-12-12
      • 2022-06-24
      • 2019-06-11
      • 2021-03-02
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多