Widget 测试 TextFormField obscureText 值

Widget testing TextFormField obscureText value

我似乎找不到小部件测试 TextFormField 是否将 obscureText 设置为 true 或 false 的方法。

我知道 TextFormField 是 TextField 的包装器,而 obscureText 是 TextField 的 属性,但我想不出在我的测试中访问 obscureText 的方法。

因此,当我尝试访问 obscureText 时,我收到消息:getter 'obscureText' 没有为类型 'TextFormField'

定义

有人知道如何测试 TextFormField 的 obscureText 属性 吗?

  testWidgets(
    'show and hide password fields',
    (
      WidgetTester tester,
    ) async {
      await tester.pumpWidget(
        materialWrapper(
          child: emailSignUpScreen,
        ),
      );
      final Finder passwordTextFormField = find.byKey(
        const Key(
          'passwordTextFormField',
        ),
      );
      final TextFormField input =
          tester.widget<TextFormField>(passwordTextFormField);
      expect(input.obscureText, true);
    },
  );

TextFormField 使用 EditableText 来隐藏它,你可以这样做:

final passwordTextFormField = find.descendant(
  of: find.byKey(const Key('passwordTextFormField')),
  matching: find.byType(EditableText),
);
final input = tester.widget<EditableText>(passwordTextFormField);
expect(input.obscureText, isTrue);