0

我似乎无法找到一种方法来测试 TextFormField 是否将 obscureText 设置为 true 或 false。

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

因此,当我尝试访问 obscureText 时,我收到消息: getter 'obscureText' is not defined for the type '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);
    },
  );
4

1 回答 1

2

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

于 2022-01-07T12:23:56.270 回答