如何在抽象类中模拟变量和方法?
在Java(Spring Boot)应用程序中,我使用Junit和Mockito,并想测试以下服务方法:
public Page<EmployeeDTO> findAll(EmployeeRequest request, final Sort sort) {
final List<EmployeeDTO> list = getDTOList(request);
// code omitted for brevity
}
getDtolist
方法在以下摘要类中:
public abstract class CustomCriteriaQueries {
private EntityManager entityManager;
protected void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
protected List<D> getDTOList(EmployeeRequest request) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
// code omitted
return entityManager
.createQuery(cq)
.stream()
.collect(Collectors.toList());
}
}
我尝试模拟entitymanager 使用
@mock
和stub通过mockito.when()。然后()
,但据我所知,它不能像混凝土类中那样被模拟。那么,我应该如何模拟抽象类中的变量和方法呢?
In a Java (Spring Boot) app, I use JUnit and Mockito and want to test the following service method:
public Page<EmployeeDTO> findAll(EmployeeRequest request, final Sort sort) {
final List<EmployeeDTO> list = getDTOList(request);
// code omitted for brevity
}
The getDTOList
method is in the following abstract class:
public abstract class CustomCriteriaQueries {
private EntityManager entityManager;
protected void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
protected List<D> getDTOList(EmployeeRequest request) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
// code omitted
return entityManager
.createQuery(cq)
.stream()
.collect(Collectors.toList());
}
}
I tried to mock EntityManager
using @Mock
and stub via mockito.when().then()
, but as far as I see, it cannot be mocked as in concrete classes. So, how should I mock the variables and methods in abstract class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,当Mockito.时(CustomCriteriaqueries.Class)使用Mockito.Class,然后模拟您需要使用的任何方法。
In my opinion use Mockito.when(CustomCriteriaQueries.class), then mock any method that you need to use.