簡體   English   中英

無法模擬集合對象

[英]unable to mock collection objects

如何模擬這個特定的代碼段?

Collection<SeoUrlParam> params = getUrlState().getParameters();

我已經嘲笑了

urlState = mock(UrlState.class);

但是我不確定如何模擬實際上是一個類的params集合

您可能不想嘲笑該集合。 您希望集合中存在一些真實的數據,然后讓代碼從那里操作它。

現在,按照調用的布局方式,您可能有兩個模擬對象-一個用於生成getUrlState()的模擬結果,另一個用於實際從getParameters()返回一個集合。

我不確定您使用的是哪種類型的電話,因此我將對其進行介紹。 但是,該原理適用。

// Assuming you have the appropriate mock for getUrlState defined
SeoUrlParamHolder parameterHolderMock = mock(SeoUrlParamHolder.class);
Collection<SeoUrlParam> dummyData = Collections.singletonList(new SeoUrlParam());

when(urlState.getUrlState()).thenReturn(parameterHolderMock);
when(parameterHolderMock.getParamters()).thenReturn(dummyData);

不要嘲笑集合對象。 集合本身通常沒有足夠的邏輯,因此值得對邏輯進行存根。

將您的收藏視為價值對象,並根據需要創建真實的收藏。 如果您要模擬集合中的單個對象,那很好,我強烈建議您這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM