The method query(String, ResultSetExtractor) in

2019-02-28 11:44发布

问题:

I have a compile problem which is strange. I am not able to fix this. The same peice of code works fine in another project

org.mockito.Mockito.when(jdbcTemplate.query(org.mockito.Matchers.anyString(), 
    org.mockito.Matchers.any(BeanPropertyRowMapper.class))).thenReturn(SOMELIST);

I am getting error as

The method query(String, ResultSetExtractor<T>) in the type JdbcTemplate is not applicable for the arguments (String, BeanPropertyRowMapper)

But When I do this, I do not get any error. But I am not expecting this.

BeanPropertyRowMapper<MyClass> mapper = 
    new BeanPropertyRowMapper<MyClass>(MyClass.class);
org.mockito.Mockito.when(jdbcTemplate.query(org.mockito.Matchers.anyString(), 
    mapper)).thenReturn(SOMELIST);

I am not sure if this is an Eclipse problem. Appreciate your help on this.

回答1:

Since BeanPropertyRowMapper<T> is a generic interface, you should invoke any() like this:

Mockito.when(jdbcTemplate.query(Matchers.anyString(), 
    Matchers.<BeanPropertyRowMapper<MyClass>>any())).thenReturn(SOMELIST);


回答2:

Check for the dependency (spring jars) for version mismatch between projects