如何在抖动测试中验证Switch小部件的状态?

时间:2019-03-04 19:42:28

标签: user-interface dart flutter

是否有一个抖动匹配器可以验证Switch小部件的状态?我可以使用find.byKey(myKey)通过键找到该小部件。因此,如果存在类似isToggled(state)的匹配器,我将通过在测试中编写如下内容来验证小部件的状态:

expect(find.byKey(myKey), isToggled(true))

有这样的匹配器吗?如何验证切换状态?

3 个答案:

答案 0 :(得分:1)

没有。但是您可以自己制作,所以这里是一个:

class _IsToggled extends CustomMatcher {
  _IsToggled(dynamic matcher)
      : super('Check if a switch if enabled or not', 'isToggled', matcher);

  @override
  Object featureValueOf(dynamic actual) {
    final finder =actual as Finder;
    final result = finder.evaluate().single as Switch;

    return result.value;
  }
}

Matcher isToggled(bool value) => _IsToggled(value);

答案 1 :(得分:1)

您可以使用byWidgetPredicate类的CommonFinders方法来指定任何窗口小部件的类型,然后检查该类型的状态。因此,对于您的特定示例,您只需执行以下操作:

ibooks://assetid/1396541327

答案 2 :(得分:1)

小部件

class SwitchWdt extends StatelessWidget {
  bool isSwitched = false;

  @override
  Widget build(BuildContext context) {
    return Switch(
        key: Key('widget_key'),
        value: isSwitched,
        onChanged: (_){});
  }
}

测试

final Finder switchFinder = find.byKey(Key('widget_key'));
final switchWdt = tester.widget<Switch>(switchFinder);
expect(switchWdt.value, false);