2017-02-09 25 views
3

我有一個StatefulWidget(稱之爲MyWidget),其狀態(MyWidgetState)具有場myData其期間initState()如下初始化:如何在單元測試期間訪問StatefulWidget狀態的內容?

void initState() { 
    super.initState(); 
    myData = new myData(config.someField.getId()); 
} 

當用戶按下一個按鈕時,myData的添加或刪除一個全球列表。

我想寫一個單元測試來測試這種行爲,但我不知道如何訪問MyWidgetState。我試着包括這在設置():

widget = MyWidget(); 
widgetState = widget.createState(); 
widgetState.init(); 

,但是當它試圖INITSTATE它崩潰每次(),抱怨說「someField被稱爲對空」。沒關係。我可能會試圖這樣做,我應該使用WidgetBuilder做一些事情,或者使用MyWidget啓動應用程序,然後在樹中正確實例化後在樹中找到MyWidget。

如果我做了這一切,一旦我做的我怎麼能訪問該進myWidget的MyWidgetState得到myData的副本,並將其與全局列表?

回答

2

創建使用tester.pumpWidgets小部件,然後使用tester.state(find.foo)找到State(其中find.foo是找到一個widget的取景器)。請參閱WidgetTester文檔以獲取更多選項。

相關問題