跳至主要内容

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