我如何模拟这个特定的片段?
Collection<SeoUrlParam> params = getUrlState().getParameters();
我已经嘲笑过了
urlState = mock(UrlState.class);
但是我不确定如何模拟实际上是一个类的类型的参数集合
你可能不想嘲笑这个集合。 您希望集合中存在一些真实的数据,并让代码从那里操作它。
现在,根据调用的布局方式,您可能有两个模拟对象 - 一个用于生成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);
不要模拟集合对象。 集合本身通常没有足够的逻辑来使逻辑存根变得值得。
将集合视为值对象,并根据需要创建实际集合。 如果你想模拟集合中的单个对象,那很好,我完全推荐这种做法。