Below is my DAO class:
------------------------

Class DataDao{
 public void updateStatus(List<DataVO> EvntLst, String Ind, String MessageID) {
        try{
            BatchSqlUpdate batch = new BatchSqlUpdate(getDataSource(), UPDATE_TABLE_DATA);
            batch.declareParameter(new SqlParameter(IND, Types.VARCHAR));
            batch.declareParameter(new SqlParameter(ID, Types.BIGINT));
            batch.declareParameter(new SqlParameter(RESID, Types.BIGINT));
            batch.declareParameter(new SqlParameter(SMRYID,Types.BIGINT));
            for (DataVO Data:EvntLst){
                Object[] procInd = new Object[4];
                procInd[0] = Ind;
                procInd[1] = hbdData.getId();
                procInd[2] = hbdData.getResourceId();
                procInd[3]=hbdData.getSummaryID();
                batch.update(procInd);
            }
            batch.setBatchSize(EvntLst.size());
            batch.flush();
        }catch(Exception exe){
            
            throw new Exception(uniqueMessageID + "::Error While Evnt status");
        }}



--------------------
`
@SpringBootTest(classes = DataDAOTest.class)
Class DataDaoTest{
    @Mock
    Connection connection;

    @Mock
    PreparedStatementCreator psc;

    @Mock
    PreparedStatement statement;
   @InjectMocks
    DataDAO hbdDataDAO;

   @Mock
   JdbcTemplate jdbcTemplate;
    @Test
    public void updateHBDProcStatus() throws SQLException {
        List<DataVO> EvntLst = new ArrayList<>();
        BatchSqlUpdate batch = mock(BatchSqlUpdate.class);
        Mockito.when(jdbcTemplate.getDataSource()).thenReturn(dataSource);
        Mockito.when(dataSource.getConnection()).thenReturn(connection);
        Mockito.when(psc.createPreparedStatement(connection)).thenReturn(statement);
        batch.setDataSource(dataSource);
        batch.setSql(UPDATE_TABLE_DATA);
        batch.setBatchSize(1);
        String Ind = "Y";
        String MessageID = "xyz";
        DataVO Data;
        Data = new DataVO(1234l, 543l, 567l, "yyyy-mm-dd hh:mm:ss", "123l", "abc", "yyyy-mm-dd hh:mm:ss", "N");
        EvntLst.add(Data);
        Object[] procInd = new Object[4];
        procInd[0] = Ind;
        procInd[1] = hbdData.getId();
        procInd[2] = hbdData.getResourceId();
        procInd[3] = hbdData.getSummaryID();
        Mockito.when(batch.update(eq(procInd))).thenReturn(1);
        dataDAO.updateStatus(EvntLst, Ind,MessageID);

    }
}


Below is the stacktrace i'm getting:

java.lang.IllegalArgumentException: No Statement specified at org.springframework.util.Assert.notNull(Assert.java:201) ~[spring-core-5.3.20.jar:5.3.20] at org.springframework.jdbc.datasource.DataSourceUtils.applyTimeout(DataSourceUtils.java:334) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.applyStatementSettings(JdbcTemplate.java:1470) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:650) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:691) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:1034) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.object.BatchSqlUpdate.flush(BatchSqlUpdate.java:185) ~[spring-jdbc-5.3.20.jar:5.3.20] at com.uprr.mdd.event.ehms_ds_interchange.process.dao.impl.DataDAO.updateStatus(DataDAO.java:98) [classes/:?] at com.uprr.mdd.event.ehms_ds_interchange.process.dao.DataDAOTest.updateStatus(DataDAOTest.java:129)

0

There are 0 best solutions below