我如何模拟这个特定的代码片段?
Collection<SeoUrlParam> params = getUrlState().getParameters();我已经嘲笑过了
urlState = mock(UrlState.class);但是我不确定如何模拟type的params集合,因为它实际上是一个类。
发布于 2014-03-05 11:41:50
你可能不想嘲笑这个集合。您希望集合中存在一些真实的数据,并让代码从那里对其进行操作。
现在,根据您的调用的布局方式,您可能有两个模拟对象-一个用于生成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);发布于 2014-03-06 17:43:39
不要模仿集合对象。集合本身通常没有足够的逻辑,因此不值得将逻辑存根出来。
将您的集合视为值对象,并根据需要创建真实的集合。如果您想模拟集合中的单个对象,这是很好的,我强烈建议您这样做。
https://stackoverflow.com/questions/22187918
复制相似问题