Flutter:如何使用testWidgets测试小部件的动态颜色

时间:2019-07-18 20:57:57

标签: testing flutter widget themes

我想为自定义小部件编写单元测试,特别是检查基于BuildContext为主题的嵌套文本小部件的颜色。如何基于BuildContext测试不同的样式?

要测试的小部件:

class ThemedText extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final TextStyle inheritedTextStyle = Theme.of(context).textTheme.subtitle;
    Color customColor = inheritedTextStyle.color;
    if (inheritedTextStyle.color == Colors.blue) {
      // Override the inherited color
      customColor = Colors.red;
    }

    return Text(
      'Themed',
      style: inheritedTextStyle.copyWith(color: customColor),
    );
  }
} 

我要编写两个测试:

  • 为继承的TextStyle提供Colors.blue的颜色,并测试Text Widget是否用替代颜色(即Colors.blue)呈现。
  • 为继承的TextStyle提供非Colors.blue(例如Colors.green)的颜色,并测试Text Widget是否用继承的颜色(例如Colors.green)呈现。

1 个答案:

答案 0 :(得分:0)

这样的事情对我有用:

final textColorFinder = tester.widget<Text>(find.byType(Text));

expect(textColorFinder.style.color, Colors.red);