我成功嘲笑
JdbcTemplate jdbcTemplate = getJdbcTemplate();
jdbcTemplate.queryForObject();
与
JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
when(jdbcTemplate.queryForObject(JdbcTwitterDao.SQL_SELECT_TWITTER, parameterizedRowMapper, 1)).thenReturn(expectedObject);
请您告诉我如何模拟
getJdbcTemplate().queryForObject();
我不知道应该嘲笑哪个对象。
答案 0 :(得分:3)
如果您正在寻找如何模拟可变长度参数方法:
假设您的DAO类还为模拟方法queryForObject(string,rowMapper,Object...)
JdbcTemplate jdbcTemplateMock = Mockito.mock(JdbcTemplate.class);
ReflectionTestUtils.setField(yourDao, "jdbcTemplate", jdbcTemplateMock);
Mockito.when(jdbcTemplateMock.queryForObject(Mockito.anyString(),Mockito.any(dao.getClass()) ,Mockito.anyVararg())).thenReturn(entity);
答案 1 :(得分:2)
如果您使用JdbcDaoSupport
作为基类来获取模板,您可以在测试中构建DAO并立即在其上setJdbcTemplate(mockJdbcTemplate)
将其替换为模拟。