【问题标题】:mocking overloading method queryForObject in JdbcTemplate在 JdbcTemplate 中模拟重载方法 queryForObject
【发布时间】:2019-03-27 11:08:22
【问题描述】:

如何使用 mockito 模拟下面的代码?

@Override
@Nullable
public <T> T queryForObject(String sql, Object[] args, int[] argTypes, Class<T> requiredType)
        throws DataAccessException {

    return queryForObject(sql, args, argTypes, getSingleColumnRowMapper(requiredType));
}

我在下面尝试过:

  @Test
    public void testGetCount(){

        Mockito.when(jdbcTemplate.queryForObject(ArgumentMatchers.anyString(),Mockito.refEq(Object[].class),
                Mockito.refEq(Integer[].class), Mockito.eq(Long.class)))
                .thenAnswer((Answer<Long>) invocation -> 2l);
        User user = new User(userDetails);
        Assert.assertEquals(2,dao.getCount(user));
    }

请注意,我尝试使用 Mockito.eq 而不是 Mockito.refEq,但结果相同。

但它总是调用下面的方法:

@Override
    public <T> T queryForObject(String sql, Class<T> requiredType, @Nullable Object... args) throws DataAccessException {
        return queryForObject(sql, args, getSingleColumnRowMapper(requiredType));
    }

这里是全班:

    public class UserDetailsAggregationDaoTest {

        private final String userDetails = "10015-MTBD";

        @InjectMocks
        private UserDao dao = new UserDaoImpl();

        @Mock
        private JdbcTemplate jdbcTemplate;




   @Test
        public void testGetCount(){
            //Using Mockito.refEq
            Mockito.when(jdbcTemplate.queryForObject(ArgumentMatchers.anyString(),Mockito.refEq(Object[].class),
                    Mockito.refEq(Integer[].class), Mockito.eq(Long.class)))
                    .thenAnswer((Answer<Long>) invocation -> 2l);
            User user = new User(userDetails);
            Assert.assertEquals(2,dao.getCount(user));
        }


    }

任何帮助将不胜感激

【问题讨论】:

标签: mockito jdbctemplate


【解决方案1】:

修改如下:

Mockito.when(jdbcTemplate.queryForObject(ArgumentMatchers.anyString(),Mockito.any(Object[].class),Mockito.any(int[].class), Mockito.eq(Long.class)))
            .thenReturn(2l);

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多