[英]How to mock a variable and method in Abstract Class?
在 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());
}
}
我嘗試使用@Mock
模擬EntityManager
並通過mockito.when().then()
存根,但據我所知,它不能像在具體類中那樣被模擬。 那么,我應該如何模擬抽象類中的變量和方法呢?
在我看來,使用 Mockito.when(CustomCriteriaQueries.class),然后模擬您需要使用的任何方法。
@Test
public void testMethod(){
CustomCriteriaQueries customCriteriaQueries = Mockito.when(CustomCriteriaQueries.class);
Assert.anyOperationYouNeed(customCriteriaQueries.getDTOList(this.buildEmployeeRequest));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.