Как проверить, скрыт ли текст на InputField
Я пытаюсь проверить, скрыт ли пароль, вот как далеко я захожу, но похоже, что flutter может прочитать текст, даже если он скрыт.
testWidgets('password must be hidden', (WidgetTester tester) async {
await tester.pumpWidget(wrapWithMaterialApp(child: page));
await tester.enterText(find.byKey(Key('pass')), '1234');
final passFinder = find.text('1234');
expect(passFinder, findsNothing);
});
тест на самом деле нашел "1234", но я полностью уверен, что он скрыт.
1 ответ
Решение
Независимо от того obscureText
флаг, введенный текст всегда сохраняется в памяти (этот параметр влияет только на визуальное представление). В тестах мы можем проверить это свойство только следующим образом:
testWidgets('TextField', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
final finder = find.byKey(Key('pass'));
final input = tester.firstWidget<TextField>(finder);
expect(input.obscureText, true);
});