【发布时间】:2018-12-13 07:30:44
【问题描述】:
要使用 Mockito 测试的存储库代码:
public List<X> findAll() {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<X> criteriaQuery = criteriaBuilder.createQuery(X.class);
Root<X> policyRoot = criteriaQuery.from(X.class);
return entityManager.createQuery(criteriaQuery.select(policyRoot)).getResultList();
}
如何模拟entityManger的cretedQuery()和getResultList()方法?
@Test
public void testCase() {
when(entityManager.getCriteriaBuilder()).thenReturn(new
CriteriaBuilderImpl(any()));
Query query = new QueryImpl(any(), any(), any());
when(entityManager.createQuery(anyString())).thenReturn(query);
when(query.getResultList()).thenReturn(attributeList);
}
它抛出 NullPointerException。
【问题讨论】:
-
不要。这样的测试不会带来任何价值。相反,编写一个使用测试数据填充数据库的测试,调用该方法,并查看它是否返回预期的 X 列表。
标签: spring-boot intellij-idea mockito testng entitymanager