2017-04-04 32 views
-1

任何人都可以給出一個建議如何使when(bufferedReader.readLine()).thenReturn(line); 調用一次? 因爲我在所有行中都有一個while循環,我只想測試單行。BufferedReader模擬。 readLine()只需要調用一次

+0

你問的是如何使它返回一次,然後null?你還可以發佈你迄今爲止的代碼嗎? –

回答

2

thenReturn如果要更改後續調用的返回值,則需要可變參數。

when(bufferedReader.readLine()).thenReturn(line, null); 

這將導致它第一次返回行,每次後都返回null。

編輯: 請注意,您還可以執行以下操作來得到相同的結果:

when(bufferedReader.readLine()).thenReturn(line).thenReturn(null); 
0

恕我直言,這是更好地使用一個真實的,但簡單的BufferedReader,而不是爲你的測試存根。

BufferedReader reader = new BufferedReader(
    new StringReader(line) 
); 

BufferedReader的合同很複雜。因此,如果更改了代碼的內部結構(例如,讀取單個字符而不是行),那麼使用存根測試可能會失敗,但代碼仍然正確。

相關問題