Тест виджета Flutter не прошел для InkWell Tap
У меня есть такой тест виджета, я могу найти его с помощью actionKey
, но тест на нажатие не проходит и tapped
значение ложно после tester.tap(...)
, что не так с моим тестом?
testWidgets('some test', (WidgetTester tester) async {
final UniqueKey actionKey = UniqueKey();
bool tapped = false;
await tester.pumpWidget(MaterialApp(
home: Scaffold(
body: SlidableListItem(
child: const ListTile(title: Text('item')),
actions: <Widget>[
InkWell(
key: actionKey,
child: const Text('action'),
onTap: () => tapped = true,
),
],
),
),
));
await tester.tap(find.byKey(actionKey));
await tester.pump();
expect(find.byKey(actionKey), findsOneWidget);
expect(tapped, isTrue); <- failes
});
The following TestFailure object was thrown running a test:
Expected: true
Actual: <false>
4 ответа
У меня работает оценка виджета.
InkWell InkWellButton() => find
.byKey(actionKey)
.evaluate()
.first
.widget;
а затем действие на Inkwell работает.
InkWellButton().onTap();
await tester.pumpAndSettle();
Надеюсь это поможет!
Попробуйте сделать InkWell дочерним элементом виджета Material.
Попробуйте подождать после нажатия примерно 2 секунды.
await tester.pump(Duration(seconds: 2));
Я думаю, это должно сработать, так как у меня это сработало.
Я понял. Вы должны установитьensureVisible()
первый.
var foo = find.byKey(actionKey);
await tester.ensureVisible(foo); // <-- here
await tester.tap(foo);
await tester.pumpAndSettle();