概述

#

作為螢幕鍵盤的存根(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