业务上,经常会出现多层泛型嵌套的场景,对于这种对象,使用mock来写单测的一种方式是:
// 业务代码(想要mock的地方)
List<OrderBasicDTO> basicList = futureUtil.getFuture(orderListFuture.getBasicFuture());
// orderListFuture.getBasicFuture()对应的实体:
@Getter
@Setter
@ToString
@Builder
public class OrderListFuture {
Future<List<OrderBasicDTO>> basicFuture;
}
这种需要mock指定类型的解决方式为:
when(futureUtil.getFuture(Matchers.<Future<List<OrderBasicDTO>>>any()))
.thenReturn(Lists.newArrayList(new OrderBasicDTO()));