2011-11-26 55 views
2

我成功地嘲笑如何模擬getJdbcTemplate()。queryForObject()?

JdbcTemplate jdbcTemplate = getJdbcTemplate(); 
jdbcTemplate.queryForObject(); 

JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class); 
when(jdbcTemplate.queryForObject(JdbcTwitterDao.SQL_SELECT_TWITTER, parameterizedRowMapper, 1)).thenReturn(expectedObject); 

請你讓我知道如何嘲笑

getJdbcTemplate().queryForObject(); 

我不知道哪一個對象,我應該嘲笑。

+0

嘿應該真的不假種你不擁有,在你的情況下尤其是JDBC的東西。寫一個集成測試! – Brice

+0

謝謝Brice。發佈這個問題後我意識到了。 –

回答

2

如果您使用JdbcDaoSupport作爲獲取模板的基類,您可以在測試中簡單構建您的DAO,並立即在setJdbcTemplate(mockJdbcTemplate)上將其替換爲您的模擬。

3

如果你正在尋找如何嘲笑可變長度參數的方法:

假設你的DAO類也實現的RowMapper接口嘲諷方法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);