【问题标题】:method is not called inside another method in JUnit在 JUnit 的另一个方法中没有调用方法
【发布时间】:2020-02-17 10:31:03
【问题描述】:

我有一个方法可以在里面调用另一个 mehide。 这是我的方法:

    public void unblocUser(BloclistDTO bloclistDTO) {
    blocListRepository.delete(mapper.toModel(bloclistDTO));
      if (blocListRepository.getBlocList(bloclistDTO.getCandidate().getId(), bloclistDTO.getColumnName()).isEmpty()) {
        this.setVisibility(bloclistDTO.getCandidate().getId(), bloclistDTO.getColumnName(), true);
    }  
}

我已经测试了 setVisibility 方法本身,它可以工作。但是,当 clling unblocUser 时它不起作用; 以下是我的测试方法:

@Test
public void unblocUserLastOne() {
        Company  blockedCompany = new Company (); 
        Candidate  candidate = new Candidate (); 
        candidate.setId(1L); 
        candidate.setPersonalDetailsVisible(false);;
        blockedCompany.setId(2L);
        candidate.setPersonalDetailsVisible(false);
        BloclistDTO bloclist= new BloclistDTO(); 
        bloclist.setBlockedCandidate(null);
        bloclist.setCandidate(candidate);
        bloclist.setBlockedCompany(blockedCompany);
        bloclist.setColumnName("personal_details_visible");   
        bloclist.setId(3L);
        blocListService.unblocUser(bloclist); 
         assertEquals(true, candidate.isPersonalDetailsVisible());   
} 

我收到一个错误:预期为真,但结果为假。 请问有什么帮助吗?

【问题讨论】:

    标签: spring-boot unit-testing junit


    【解决方案1】:

    首先你需要为 BlocListRepository 类创建一个模拟对象

    @InjectMocks
    BlocListRepository blocListRepository;
    

    然后在 BlocListRepository 类中模拟 delete 方法。

    @Test
    public void unblocUserLastOne() {
    
        Mockito.doNothing().when(blocListRepository).delete(Mockito.any());
    
        Company  blockedCompany = new Company (); 
        Candidate  candidate = new Candidate (); 
        candidate.setId(1L); 
        candidate.setPersonalDetailsVisible(false);;
        blockedCompany.setId(2L);
        candidate.setPersonalDetailsVisible(false);
    
        BloclistDTO bloclist= new BloclistDTO(); 
        bloclist.setBlockedCandidate(null);
        bloclist.setCandidate(candidate);
        bloclist.setBlockedCompany(blockedCompany);
        bloclist.setColumnName("personal_details_visible");   
        bloclist.setId(3L);
        blocListService.unblocUser(bloclist); 
        assertEquals(true, candidate.isPersonalDetailsVisible());   
    } 
    

    【讨论】:

    • 我收到此错误:无法实例化名为“blocListRepository”的@InjectMocks 字段!原因:“BlocListRepository”类型是一个接口。您没有在字段声明时提供实例,所以我尝试构造实例。
    • 试试这个 BlocListRepository blocListRepository = PowerMockito.mock(BlocListRepository.class)
    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多