🤖
[Flutter] Widgetテストのいろいろ
FlutterのWidget Testを行う上で気づいたことやエラーなどをメモしていきます. 👍
Widgetを探す
ensureVisible
該当Widgetが画面外にあるとき,そのWidgetが表示されるまでスクロールする
該当Widgetが画面外にあるときに表示されるwarning.
Maybe the widget is actually off-screen, or another widget is obscuring it, or the widget cannot receive pointer events.
byKey
特定のKeyを持つWidgetを探す
textのvalueを取得する
Text
のvalueを取得して,その値が正しいかどうか確認したい.
screen_test.dart
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('expect text.data == "text"', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
home: Column(
children: const [
Text(
'text',
key: ValueKey('unit_text'),
),
],
),
),
);
// ValueKey で探す
final finder = find.byKey(const ValueKey('unit_text'));
// 探したWidgetをText Widgetとして取得
final text = finder.evaluate().single.widget as Text;
// Text Widgetのdataが'text'と正しいか比較
expect(text.data, 'text');
});
}
TextFieldのmaxlengthを取得する
TextFieldにmaxLengthを指定して,その値をテストしたい.
TextField(
maxLength: 30,
final finder = find.byType(TextField);
final textField = finder.evaluate().first.widget as TextField;
final textField = await r.expectEditTitleTextFieldFound();
expect(textField.maxLength, maxLength);
Discussion