重置 TestTextInput 状态
概述
#现在 TestTextInput
实例(系统屏幕键盘的存根)的状态会在测试之间重置。
上下文
#Flutter 测试框架中使用一个名为 TestTextInput
的类来跟踪和操作 widgets 测试中的编辑状态。个别测试可以通过方法调用来修改此对象的内部状态,有时是间接的(例如通过 SystemChannels.textInput
设置自己的处理程序)。在其之后的的测试可能会检查 WidgetTester.testTextInput
的状态,拿到不符合预期的值。
更改描述
#现在 WidgetTester.testTextInput
的状态会在运行 testWidgets
测试之前重置。
迁移指南
#之前依赖于 WidgetTester.testTextInput
运行时脏状态的测试必须更新。例如 packages/flutter/test/material/text_field_test.dart
文件中的 'Controller can update server'
测试。在这之前,其它测试使得 WidgetTester.testTextInput
处于脏状态,并且在应该设置状态的时候设置状态失败,所以它通过了测试。
迁移前的代码:
widgetsTest
里,在实际更改文本编辑 widget 上的文本之前,此调用可能已成功:
dart
expect(tester.testTextInput.editingState['text'], isEmpty);
迁移后的代码:
要么完全删除该调用,要么考虑使用以下声明来确认状态尚未被修改:
dart
expect(tester.testTextInput.editingState, isNull);
时间轴
#发布于版本:1.16.3
发布于稳定版本:1.17
参考文献
#API 文档:
相关 issues:
相关 PR:
除非另有说明,本文档之所提及适用于 Flutter 的最新稳定版本,本页面最后更新时间: 2024-04-27。 查看文档源码 或者 为本页面内容提出建议。