概述

#

作为屏幕键盘的存根(stub)的 TestTextInput 实例的状态,现在会在测试之间重置。

背景

#

Flutter 测试框架使用一个名为 TestTextInput 的类来跟踪和操作 widget 测试中的编辑状态。单独的测试可以调用修改此对象内部状态的操作,有时是间接的(例如,通过在 SystemChannels.textInput 上设置自己的处理程序)。后续的测试可能会检查 WidgetTester.testTextInput 的状态并获得意外的值。

变更说明

#

现在,在运行 testWidgets 测试之前,WidgetTester.testTextInput 的状态会被重置。

迁移指南

#

依赖于之前运行的测试中遗留的脏状态的测试必须进行更新。例如,下面的测试,来自 packages/flutter/test/material/text_field_test.dart'Controller can update server' 这个测试,之前因为前几次测试的脏状态以及在应该设置状态时未能实际设置状态而通过了。

迁移前的代码

widgetsTest 中,在实际更改文本编辑 widget 的文本之前,此调用可能已成功

dart
    expect(tester.testTextInput.editingState['text'], isEmpty);

迁移后的代码

请删除该调用,或者考虑使用以下方法来断言状态尚未被修改

dart
    expect(tester.testTextInput.editingState, isNull);

时间线

#

发布版本: 1.16.3
稳定版本: 1.17

参考资料

#

API 文档

相关议题

相关 PR