TestTextInput 状态重置
概述
#TestTextInput
实例(系统屏幕键盘的模拟)的状态现在会在测试之间重置。
背景
#Flutter 测试框架使用一个名为 TestTextInput
的类来追踪和操作部件测试中的编辑状态。单个测试可以调用修改此对象内部状态的方法,有时是间接地(例如通过在 SystemChannels.textInput
上设置自己的处理程序)。后续测试可能会检查 WidgetTester.testTextInput
的状态并得到意想不到的值。
变更说明
#在运行 testWidgets
测试之前,WidgetTester.testTextInput
的状态现在已被重置。
迁移指南
#依赖于先前运行测试的“脏状态”的测试必须进行更新。例如,在 packages/flutter/test/material/text_field_test.dart
中的 'Controller can update server'
测试,以前通过了,原因是先前测试的“脏状态”以及在应该设置状态的情况下未能实际设置状态的组合。
迁移前的代码
在 widgetsTest
中,在实际更改文本编辑部件上的文本之前,此调用可能已成功。
dart
expect(tester.testTextInput.editingState['text'], isEmpty);
迁移后的代码
要么完全移除该调用,要么考虑使用以下方式来断言状态尚未被修改:
dart
expect(tester.testTextInput.editingState, isNull);
时间线
#发布版本: 1.16.3
稳定版本: 1.17
参考资料
#API 文档
相关议题
相关 PR