如何在 Flutter 测试中模拟 TextField 上的按 ENTER

Posted

技术标签:

【中文标题】如何在 Flutter 测试中模拟 TextField 上的按 ENTER【英文标题】:How to mimic a pressing ENTER on a TextField in Flutter Tests 【发布时间】:2019-06-29 12:28:03 【问题描述】:

鉴于tester.enterText 将允许我在颤振测试中在TextField 上输入文本,我将如何模拟按下android 键盘上的DONE 键或按下ENTER 在文本字段内的键盘上?

这也相当于检查是否按下了 ios/android 键盘上的 DONE 按钮

【问题讨论】:

接受你自己的答案作为这个问题的答案 :) 这对我帮助很大 【参考方案1】:

我在flutter repo测试中找到了实现@https://github.com/flutter/flutter/blob/7e445a17324ee7e615ef2c886d0cb9407853f338/packages/flutter/test/widgets/editable_text_test.dart#L558:

例如:await tester.testTextInput.receiveAction(TextInputAction.done);

// example
await tester.enterText(find.byKey(new Key('txtFieldKey')), 'Hello World!');
await tester.testTextInput.receiveAction(TextInputAction.done);
await tester.pump();

【讨论】:

这显然适用于此,但对于集成测试,这将不起作用,这里有一个未解决的问题github.com/flutter/flutter/issues/9383 @xpeldev 不过,在集成测试中没有解决方案:( 使用 integration_test 包,此实现有效。 伟大的工作。这有帮助..

以上是关于如何在 Flutter 测试中模拟 TextField 上的按 ENTER的主要内容,如果未能解决你的问题,请参考以下文章

如何在集成测试中模拟 BLoC

如何在开发过程中同时使用 Android 和 IOS 模拟器来测试我的 Flutter 应用程序?

在 Flutter 测试中模拟一个 Widget

如何在 Flutter 应用程序中连接到本地实时数据库模拟器?

如何在 Visual Studio Code 中为 Flutter 添加 iOS 模拟器?

如何在 Flutter 小部件测试中等待未来完成?