第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

模擬一個(gè)返回 Stream 并被多次調(diào)用的方法

模擬一個(gè)返回 Stream 并被多次調(diào)用的方法

江戶川亂折騰 2022-06-15 16:53:08
MyStreamClass mock = mock(MyStreamClass.class);when(mock.streamMethod()).thenReturn(Stream.of("A", "B"));System.out.println(""+mock.streamMethod().findFirst());System.out.println(""+mock.streamMethod().findFirst());findFirst 的第二次調(diào)用將拋出 java.lang.IllegalStateException: stream has already been operating on or closed
查看完整描述

4 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

嘗試thenAnswer代替thenReturn:


Answer<Stream> answer = new Answer<Stream>() {

    public Stream answer(InvocationOnMock invocation) throws Throwable {

        return Stream.of("A", "B");

    }

};



when(mock.streamMethod()).thenAnswer(answer);

現(xiàn)在將為每次調(diào)用創(chuàng)建一個(gè)新的 Stream streamMethod。


進(jìn)一步閱讀:


這是我在 Mockito中寫的一篇關(guān)于動(dòng)態(tài)回答的文章,可能是互補(bǔ)的。


查看完整回答
反對(duì) 回復(fù) 2022-06-15
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

您不是在模擬 Stream,而是在創(chuàng)建一個(gè) - 而且只有一個(gè),它將在調(diào)用第一個(gè)終止方法后被消耗,這就是您所經(jīng)歷的。


在大多數(shù)情況下,最好盡可能堅(jiān)持嘲笑,就您而言


MyStreamClass mock = mock(MyStreamClass.class);

Stream mockStream = mock(Stream.class);

when(mock.streamMethod()).thenReturn(mockStream);

這應(yīng)該足以測試所有客戶端MyStreamClass- 從流中獲取實(shí)際結(jié)果是沒有意義的。


如果這不適合您的設(shè)計(jì),您也可以使用Answer:


when(mock.streamMethod()).then(i -> Stream.of("A", "B"));

這將導(dǎo)致每次調(diào)用該方法時(shí)都會(huì)創(chuàng)建流。


或者,您可以使用 模擬多個(gè)調(diào)用thenReturn()。


when(mock.streamMethod()).thenReturn(Stream.of("A", "B"), Stream.of("A", "B"));

這將持續(xù)你 2 個(gè)電話。


查看完整回答
反對(duì) 回復(fù) 2022-06-15
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

嘗試 thenAnswer 使用 Java 8 方法

when(mock.streamMethod()).thenAnswer(invocation -> Stream.of("A", "B"))


查看完整回答
反對(duì) 回復(fù) 2022-06-15
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊

嘗試這個(gè):


MyStreamClass mock = Mockito.mock(MyStreamClass.class);


Mockito.when(mock.streamMethod()).thenReturn(Stream.of("A", "B"));

Stream s = mock.streamMethod();


s.forEach(System.out::println);


查看完整回答
反對(duì) 回復(fù) 2022-06-15
  • 4 回答
  • 0 關(guān)注
  • 185 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)