I have DAO class as below:-
// Here I have a class that creates it's own jdbcTemplate using new // jdbcTemplate(dataSource)
@Repository
public class MyDao {
  @Autowired
  @Qualifier("db2JdbcTemplate)"
  JdbcTemplate jdbcTemplateDB2;
  public int insertTable(Company comp) {
    int ret = 0;
    try {
      ret = this.jdbcTemplateDB2(db2DataSource).update(ïnsert into "+ table_name + "(COL1,COL2,...) values (?,?,?,..)",
           ps-> {
               ps.setString(1, comp.getName);
               .......
             });
      return ret;
    } catch (Exception ex) {
        // log etc
    }
  }
}
My Test class is as below:-
    @RunWith(MockitoJUnitRunner.class)
    public class MyTest {
    
      @Mock 
      JdbcTemplate jdbcTemplateDB2;
    
      Company comp = new Company(); // this is followed by setter fn to set values.
    
      MyDao mydao = Mockito.mock(MyDao.class);
      Mockito.when(((jdbcTemplateDB2.update(any(String.class), 
                                     any(PreparedStatement.class))).thenReturn(2);
      ReflectionUtils.setField(mydao, "jdbcTemplateDB2", jdbcTemplateDB2);
    
      int bVal = mydao.insertTable(cmp);
    
    }
}
iVal is not getting value 2. It is making original update call and returning value like 0/1. Getting UnnecessaryStubbingException. If I make lenient() call the exception goes away but result is same (expected as lenient only removes warning). How to make this stubbing work?
 
    