【发布时间】:2020-09-06 20:27:33
【问题描述】:
我有这个方法:
public void executeShadowingCF(String outputPath) throws Exception {
try{
Iterator<Fatt0Gdpr> notProcessedGDPRIterator = gdprDAO.getGdprRowCF(em1Fatt0);
while(notProcessedGDPRIterator.hasNext()){
Fatt0Gdpr element = notProcessedGDPRIterator.next();
String codiceFiscale = element.getCodFiscale();
if(codiceFiscale != null && !codiceFiscale.equalsIgnoreCase("")){
//some operation
}
else{
gdprDAO.updateProcessedRow(emFatt0Update, element.getIdTecnico(), "99");
}
}
}
catch(Exception e ){
log.error(e);
}
finally{
emFatt0.close();
}
}
我正在尝试使用 mockito 对其进行测试,但是当我执行测试时,notProcessedGDPRIterator.hasNext() 始终返回 false,因此我无法进入 while 循环。
这是我的测试方法:
@Test
public void testExecuteShadowingCF() {
try {
EntityManager em1Fatt0 = Mockito.mock(EntityManager.class);
EntityManager emFatt0 = Mockito.mock(EntityManager.class);
Fatt0GdprService service = new Fatt0GdprService();
Fatt0GdprDAO fatt0GdprDAO = new Fatt0GdprDAO();
Query queryFind = Mockito.mock(Query.class);
Iterator<Fatt0Gdpr> mockIterator = Mockito.mock(Iterator.class);
Mockito.when(
emFatt0.createNativeQuery(Mockito.anyString(),
eq(Fatt0Gdpr.class))).thenReturn(queryFind);
Mockito.when(fatt0GdprDAO.getGdprRowNDG(emFatt0)).thenReturn(mockIterator);
Mockito.when(mockIterator.hasNext()).thenReturn(true).thenReturn(false);
Mockito.when(mockIterator.next()).thenReturn(new Fatt0Gdpr());
service.setEmFatt0Updater(emFatt0);
EntityTransaction trxMock = Mockito.mock(EntityTransaction.class);
Mockito.when(service.getEmFatt0Updater().getTransaction())
.thenReturn(trxMock);
String outputPath = "U:/RTC_U0E7069/fatt0_SRC/SRC/fatt0-gdpr-batch/target/diraliases/BATCHROOT/ITT/out";
service.executeShadowingCF(outputPath);
} catch (Exception e) {
e.printStackTrace();
}
}
有人可以帮我解决这个问题吗? 谢谢
【问题讨论】:
-
gdprDAO的类和getGdprRowCF()的参数参数是什么? -
公共迭代器
getGdprRowCF(EntityManager emFatt0){ StringBuilder nativeQueryBuilder = new StringBuilder(); String nativeQuery = nativeQueryBuilder.append("SELECT * FROM TABLE_GDPR WHERE FLG_ELABORATO = 'N' AND COD_FISCALE 不为空").toString();查询 queryFind = emFatt0.createNativeQuery(nativeQuery,Fatt0Gdpr.class);返回 queryFind.getResultStream().iterator(); } -
但是测试目标类中调用
getGdprRowCF()的方法不是getGdprRowNDG()?
标签: java iterator mockito next