【发布时间】:2019-07-01 07:48:40
【问题描述】:
我是 Mockito 的新手,并试图模拟一种服务方法。但是,Mockito 无法正确模拟该函数。
这里是部分测试代码:
@Mock
ConditionalLimitDao conditionalLimitDao;
@InjectMocks
ConditionalLimitFilingServiceImpl conditionalLimitFilingService;
Mockito.when(conditionalLimitDao.getAllConditionalLimitProductGroups()).thenReturn(Arrays.asList(clpg1));
班级:
public class ConditionalLimitFilingServiceImpl implements ConditionalLimitFilingService {
@Inject
private ConditionalLimitDao conditionalLimitDao;
@Override
public List<ConditionalLimitFiling> getConditionalLimitFiling(String filingMonth, Date reportDate)
throws SQLException, RemoteException {
conditionalLimitProductGroups = getConditionalLimitProductGroups();
return something;
}
private List<ConditionalLimitProductGroup> getConditionalLimitProductGroups() {
return conditionalLimitDao.getAllConditionalLimitProductGroups();
}
}
我期待getAllConditionalLimitProductGroups() 返回一个非空列表。但是,它返回一个空列表。有人可以帮忙吗?
【问题讨论】:
-
它返回一个空列表而不是 null 的事实表明它在模拟,clpg1 是一个空数组吗?
-
没有。它不是空的。 clpg1 是 ConditionalLimitProductGroup 类型的对象。
-
Arrays.asList(clpg1) 自己返回什么?
-
删除@Inject 后尝试测试。这样,您可以确保处理注入的任何人都不会覆盖模拟对象(假设您的测试在启用注入的上下文中运行)。