2014-02-12 62 views
0

我想嘲笑如下的私有方法。但是,在第4行,JUnit调用相关的validateLanguage方法,并且由于调用其他方法时从private方法validateLanguage抛出异常,因此不返回模拟值。我的理解是使用PowerMock的JUnit应该跳过对validateLanguage的实际实现的调用。有人可以澄清吗?调用另一个私有方法的电源嘲讽私有方法

public void validateCAR_SourceValidation_Success() throws Exception{ 

1.   long partyId=21; 

2.   ErrorMessage errorMessage =Mockito.mock(ErrorMessage.class); 
      CARValidationInfoVO carValidationInfo = Mockito.mock(CARValidationInfoVO.class); 

3.   BibliographicRecordProcDAO bibRecProcDao=PowerMockito.spy(new BibliographicRecordProcDAO()); 

4.   PowerMockito.doReturn(true).when(bibRecProcDao,"validateLanguage",carValidationInfo,true,errorMessage); 
5.   bibRecProcDao.validateCARFile(carValidationInfo, partyId); 
    } 



private boolean validateLanguage(CARValidationInfoVO carValidationInfo, boolean successFlag, ErrorMessage errorMessage) throws OPSBankServiceDAOException { 
     boolean tempFlag; 
     boolean tmpFlag = successFlag; 
     if (Utility.isNotEmpty(carValidationInfo.getLanguageList()) 
       && carValidationInfo.getLanguageList().iterator().hasNext()) { 
      tempFlag = validateLanguages(carValidationInfo.getLanguageList(), 
        errorMessage); 
      tmpFlag = tmpFlag && tempFlag; 
     } 
     return tmpFlag; 
    } 

回答

0

你确定你的方法调用被模拟吗?你期望的CARValidationInfoVO对象是否等于对象被传递给真正的方法调用?

+0

是的,我确定。 – Dhrubo