概述

#

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