重置 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 上的文字之前,此呼叫可能已成功:
expect(tester.testTextInput.editingState['text'], isEmpty);
遷移後的程式碼:
要麼完全刪除該呼叫,要麼考慮使用以下宣告來確認狀態尚未被修改:
expect(tester.testTextInput.editingState, isNull);
時間軸
發布於版本:1.16.3
發布於穩定版本:1.17
參考文獻
API 文件:
相關 issues:
相關 PR: