簡體   English   中英

如何在抽象類中模擬變量和方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM