Java 无法模拟集合对象

Java 无法模拟集合对象,java,mockito,Java,Mockito,我如何模仿这个特定的片段 Collection<SeoUrlParam> params = getUrlState().getParameters(); 但是我不知道如何模拟类型为的params集合,实际上它是一个类您可能不想模拟该集合。您希望集合中存在一些真实的数据,并让代码从那里对其进行操作 现在,按照调用的布局方式,可能有两个模拟对象—一个用于生成getUrlState()的模拟结果,另一个用于实际返回getParameters()的集合 我不确定你在这两个电话中使用的是哪种

我如何模仿这个特定的片段

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

但是我不知道如何模拟类型为的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);
//假设已为getUrlState定义了适当的mock

SeoUrlParamHolder参数holdermock=mock(SeoUrlParamHolder.class); Collection dummyData=Collections.singletonList(新的SeoUrlParam()); when(urlState.getUrlState())。然后返回(parameterHolderMock); when(parameterHolderMock.getParameters()).thenReturn(dummyData);
您可能不想模仿收藏。您希望集合中存在一些真实的数据,并让代码从那里对其进行操作

现在,按照调用的布局方式,可能有两个模拟对象—一个用于生成
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);
//假设已为getUrlState定义了适当的mock

SeoUrlParamHolder参数holdermock=mock(SeoUrlParamHolder.class); Collection dummyData=Collections.singletonList(新的SeoUrlParam()); when(urlState.getUrlState())。然后返回(parameterHolderMock); when(parameterHolderMock.getParameters()).thenReturn(dummyData);
您可能不想模仿收藏。您希望集合中存在一些真实的数据,并让代码从那里对其进行操作

现在,按照调用的布局方式,可能有两个模拟对象—一个用于生成
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);
//假设已为getUrlState定义了适当的mock

SeoUrlParamHolder参数holdermock=mock(SeoUrlParamHolder.class); Collection dummyData=Collections.singletonList(新的SeoUrlParam()); when(urlState.getUrlState())。然后返回(parameterHolderMock); when(parameterHolderMock.getParameters()).thenReturn(dummyData);
您可能不想模仿收藏。您希望集合中存在一些真实的数据,并让代码从那里对其进行操作

现在,按照调用的布局方式,可能有两个模拟对象—一个用于生成
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);
//假设已为getUrlState定义了适当的mock

SeoUrlParamHolder参数holdermock=mock(SeoUrlParamHolder.class); Collection dummyData=Collections.singletonList(新的SeoUrlParam()); when(urlState.getUrlState())。然后返回(parameterHolderMock); when(parameterHolderMock.getParameters()).thenReturn(dummyData);
不要模拟集合对象。集合本身通常没有足够的逻辑,不值得将逻辑剔除


将您的集合视为值对象,并根据需要创建真正的集合。如果您想模拟集合中的单个对象,这很好,我完全推荐这种做法。

不要模拟集合对象。集合本身通常没有足够的逻辑,不值得将逻辑剔除


将您的集合视为值对象,并根据需要创建真正的集合。如果您想模拟集合中的单个对象,这很好,我完全推荐这种做法。

不要模拟集合对象。集合本身通常没有足够的逻辑,不值得将逻辑剔除


将您的集合视为值对象,并根据需要创建真正的集合。如果您想模拟集合中的单个对象,这很好,我完全推荐这种做法。

不要模拟集合对象。集合本身通常没有足够的逻辑,不值得将逻辑剔除


将您的集合视为值对象,并根据需要创建真正的集合。如果您想模拟集合中的单个对象,这很好,我完全推荐这种做法。

when(urlState.getParameters())。然后返回(/*任何您想要的*/)
您可以构建任意数量的SeoUrlParam模拟对象,然后手动将它们添加到集合中,但是可能没有必要嘲笑这个系列本身。谢谢。。但我只试过那种方法。但问题是我实际类中的urlState.getParameters()需要一个集合,其中SeoUrlParam本身就是一个类;param2=mock(SeoUrlParam.class);参数添加(参数1);参数添加(参数2)
when(urlState.getParameters()).thenReturn(/*任何您想要的*/)
您可以构建任意数量的SeoUrlParam模拟对象,然后手动将它们添加到集合中,但可能不需要模拟集合本身。谢谢。。但我只试过那种方法。但问题是实际类中的urlState.getParameters()需要SEU所在的集合