重置 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: