繁体   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